summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crt0.s100
-rw-r--r--src/rom_header.s42
-rw-r--r--src/rom_header_gf.s89
3 files changed, 131 insertions, 100 deletions
diff --git a/src/crt0.s b/src/crt0.s
index 672fc94f2..6e3b86a72 100644
--- a/src/crt0.s
+++ b/src/crt0.s
@@ -1,107 +1,7 @@
-#include "constants/global.h"
.include "constants/gba_constants.inc"
.syntax unified
- .global Start
-
- .text
-
- .arm
-
-Start: @ 8000000
- b Init
-
- .include "asm/rom_header.inc"
-
-@ 80000C0
- .word 0
-
- .global GPIOPortData
-GPIOPortData: @ 80000C4
- .2byte 0
-
- .global GPIOPortDirection
-GPIOPortDirection: @ 80000C6
- .2byte 0
-
- .global GPIOPortReadEnable
-GPIOPortReadEnable: @ 80000C8
- .2byte 0
-
-@ 80000CA
- .2byte 0
-
-@ 80000CC
- .space 0x34
-
- .4byte GAME_VERSION
- .4byte GAME_LANGUAGE
-
- .ascii "pokemon emerald version"
- .space 9
-
- .4byte gMonFrontPicTable
- .4byte gMonBackPicTable
- .4byte gMonPaletteTable
- .4byte gMonShinyPaletteTable
- .4byte gMonIconTable
- .4byte gMonIconPaletteIndices
- .4byte gMonIconPaletteTable
- .4byte gSpeciesNames
- .4byte gMoveNames
- .4byte gDecorations
-
- .4byte 0x00001270 @ offsetof(struct SaveBlock1, flags)
- .4byte 0x0000139c @ offsetof(struct SaveBlock1, vars)
- .4byte 0x00000018 @ offsetof(struct SaveBlock2, pokedex)
- .4byte 0x00000988 @ offsetof(struct SaveBlock1, seen1)
- .4byte 0x00003b24 @ offsetof(struct SaveBlock1, seen2)
- .4byte 0x00000046 @ ?
- .4byte 0x000008e4 @ ?
- .4byte 0x000008ac @ ?
- .4byte 0x00000182 @ NATIONAL_DEX_COUNT?
-
- .byte 0x07, 0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x06, 0x0c
- .byte 0x06, 0x10, 0x12, 0x0c, 0x0f, 0x0b, 0x01, 0x08
-
- .4byte 0x0000000c @ ?
- .4byte 0x00000f2c @ sizeof(struct SaveBlock2)
- .4byte 0x00003d88 @ sizeof(struct SaveBlock1)
- .4byte 0x00000234 @ offsetof(struct SaveBlock1, playerPartyCount)
- .4byte 0x00000238 @ offsetof(struct SaveBlock1, playerParty)
- .4byte 0x00000009 @ offsetof(struct SaveBlock2, specialSaveWarpFlags)
- .4byte 0x0000000a @ offsetof(struct SaveBlock2, playerTrainerId)
- .4byte 0x00000000 @ offsetof(struct SaveBlock2, playerName)
- .4byte 0x00000008 @ offsetof(struct SaveBlock2, playerGender)
- .4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
- .4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
- .4byte 0x000031c7 @ offsetof(struct SaveBlock1, externalEventFlags)
- .4byte 0x000031b3 @ offsetof(struct SaveBlock1, externalEventData)
- .4byte 0x00000000
-
- .4byte gBaseStats
- .4byte gAbilityNames
- .4byte gAbilityDescriptionPointers
- .4byte gItems
- .4byte gBattleMoves
- .4byte gBallSpriteSheets
- .4byte gBallSpritePalettes
-
- .4byte 0x000000a8 @ offsetof(struct SaveBlock2, gcnLinkFlags)
- .4byte 0x00000864 @ ?
- .4byte 0x0000089b @ ?
-
- .byte 0x1e, 0x1e, 0x10, 0x40
-
- .4byte 0x0000322e @ offsetof(struct SaveBlock1, ? part-way into mysteryGift)
- .4byte 0x00000498 @ offsetof(struct SaveBlock1, pcItems)
- .4byte 0x000031a8 @ offsetof(struct SaveBlock1, giftRibbons)
- .4byte 0x000031f8 @ offsetof(struct SaveBlock1, enigmaBerry)
- .4byte 0x00000034 @ offsetof(struct SaveBlock1, mapView)
- .4byte 0x00000000
- .4byte 0x00000000
-
.arm
.align 2, 0
.global Init
diff --git a/src/rom_header.s b/src/rom_header.s
new file mode 100644
index 000000000..596fd379f
--- /dev/null
+++ b/src/rom_header.s
@@ -0,0 +1,42 @@
+@ Note: ROM header data is empty space here.
+@ It's populated by gbafix using data provided in the Makefile.
+
+ .global Start
+Start: @ 8000000
+ b Init
+
+ .global RomHeaderNintendoLogo
+RomHeaderNintendoLogo:
+ .space 156
+
+RomHeaderGameTitle:
+ .space 12
+
+ .global RomHeaderGameCode
+RomHeaderGameCode:
+ .space 4
+
+RomHeaderMakerCode:
+ .space 2
+
+RomHeaderMagic:
+ .byte 0
+
+RomHeaderMainUnitCode:
+ .byte 0
+
+RomHeaderDeviceType:
+ .byte 0
+
+RomHeaderReserved1:
+ .space 7
+
+ .global RomHeaderSoftwareVersion
+RomHeaderSoftwareVersion:
+ .byte 0
+
+RomHeaderChecksum:
+ .byte 0
+
+RomHeaderReserved2:
+ .space 2
diff --git a/src/rom_header_gf.s b/src/rom_header_gf.s
new file mode 100644
index 000000000..b021158f5
--- /dev/null
+++ b/src/rom_header_gf.s
@@ -0,0 +1,89 @@
+#include "constants/global.h"
+
+@ 80000C0
+ .word 0
+
+ .global GPIOPortData
+GPIOPortData: @ 80000C4
+ .2byte 0
+
+ .global GPIOPortDirection
+GPIOPortDirection: @ 80000C6
+ .2byte 0
+
+ .global GPIOPortReadEnable
+GPIOPortReadEnable: @ 80000C8
+ .2byte 0
+
+@ 80000CA
+ .2byte 0
+
+@ 80000CC
+ .space 0x34
+
+ .4byte GAME_VERSION
+ .4byte GAME_LANGUAGE
+
+ .ascii "pokemon emerald version"
+ .space 9
+
+ .4byte gMonFrontPicTable
+ .4byte gMonBackPicTable
+ .4byte gMonPaletteTable
+ .4byte gMonShinyPaletteTable
+ .4byte gMonIconTable
+ .4byte gMonIconPaletteIndices
+ .4byte gMonIconPaletteTable
+ .4byte gSpeciesNames
+ .4byte gMoveNames
+ .4byte gDecorations
+
+ .4byte 0x00001270 @ offsetof(struct SaveBlock1, flags)
+ .4byte 0x0000139c @ offsetof(struct SaveBlock1, vars)
+ .4byte 0x00000018 @ offsetof(struct SaveBlock2, pokedex)
+ .4byte 0x00000988 @ offsetof(struct SaveBlock1, seen1)
+ .4byte 0x00003b24 @ offsetof(struct SaveBlock1, seen2)
+ .4byte 0x00000046 @ ?
+ .4byte 0x000008e4 @ ?
+ .4byte 0x000008ac @ ?
+ .4byte 0x00000182 @ NATIONAL_DEX_COUNT?
+
+ .byte 0x07, 0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x06, 0x0c
+ .byte 0x06, 0x10, 0x12, 0x0c, 0x0f, 0x0b, 0x01, 0x08
+
+ .4byte 0x0000000c @ ?
+ .4byte 0x00000f2c @ sizeof(struct SaveBlock2)
+ .4byte 0x00003d88 @ sizeof(struct SaveBlock1)
+ .4byte 0x00000234 @ offsetof(struct SaveBlock1, playerPartyCount)
+ .4byte 0x00000238 @ offsetof(struct SaveBlock1, playerParty)
+ .4byte 0x00000009 @ offsetof(struct SaveBlock2, specialSaveWarpFlags)
+ .4byte 0x0000000a @ offsetof(struct SaveBlock2, playerTrainerId)
+ .4byte 0x00000000 @ offsetof(struct SaveBlock2, playerName)
+ .4byte 0x00000008 @ offsetof(struct SaveBlock2, playerGender)
+ .4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
+ .4byte 0x00000ca8 @ offsetof(struct SaveBlock2, frontier.challengeStatus)
+ .4byte 0x000031c7 @ offsetof(struct SaveBlock1, externalEventFlags)
+ .4byte 0x000031b3 @ offsetof(struct SaveBlock1, externalEventData)
+ .4byte 0x00000000
+
+ .4byte gBaseStats
+ .4byte gAbilityNames
+ .4byte gAbilityDescriptionPointers
+ .4byte gItems
+ .4byte gBattleMoves
+ .4byte gBallSpriteSheets
+ .4byte gBallSpritePalettes
+
+ .4byte 0x000000a8 @ offsetof(struct SaveBlock2, gcnLinkFlags)
+ .4byte 0x00000864 @ ?
+ .4byte 0x0000089b @ ?
+
+ .byte 0x1e, 0x1e, 0x10, 0x40
+
+ .4byte 0x0000322e @ offsetof(struct SaveBlock1, ? part-way into mysteryGift)
+ .4byte 0x00000498 @ offsetof(struct SaveBlock1, pcItems)
+ .4byte 0x000031a8 @ offsetof(struct SaveBlock1, giftRibbons)
+ .4byte 0x000031f8 @ offsetof(struct SaveBlock1, enigmaBerry)
+ .4byte 0x00000034 @ offsetof(struct SaveBlock1, mapView)
+ .4byte 0x00000000
+ .4byte 0x00000000