diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | arm9/modules/06/asm/module_06.s | 70 | ||||
-rw-r--r-- | arm9/src/main.c | 2 | ||||
-rw-r--r-- | include/config.h | 16 | ||||
-rw-r--r-- | include/constants/pokemon.h | 2 | ||||
-rw-r--r-- | include/global.h | 22 | ||||
-rw-r--r-- | rom.rsf | 8 |
7 files changed, 91 insertions, 31 deletions
@@ -300,7 +300,7 @@ include filesystem.mk # TODO: Rules for Pearl # FIXME: Computed secure area CRC in header is incorrect due to first 8 bytes of header not actually being "encryObj" $(ROM): rom.rsf $(BNR) $(SBINFILES) $(HOSTFS_FILES) tools/bin/rom_header.template.sbin - $(MAKEROM) -DBNR="$(BNR)" -DTITLE_NAME="$(TITLE_NAME)" -DNITROFS_FILES="$(NITROFS_FILES)" $< $@ + $(MAKEROM) -DBUILD_DIR="$(BUILD_DIR)" -DBNR="$(BNR)" -DTITLE_NAME="$(TITLE_NAME)" -DNITROFS_FILES="$(NITROFS_FILES)" $< $@ $(FIXROM) $@ --secure-crc $(SECURE_CRC) --game-code $(GAME_CODE) # Make sure build directory exists before compiling anything diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index 53f1760a..4a57efd2 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -1,5 +1,6 @@ .include "asm/macros.inc" .include "global.inc" + .include "config.h" .section .text .balign 4, 0 @@ -1209,19 +1210,30 @@ MOD06_02239F80: ; 0x02239F80 ldr r1, _0223A01C ; =0x000022A2 add r0, sp, #0 strh r1, [r0] + .ifdef DIAMOND mov r1, #0x3e lsl r1, r1, #0xa + .else + ldr r1, _0223A01C_PEARL ; =0x0000090C + .endif strh r1, [r0, #2] mov r1, #0 strh r1, [r0, #4] ldr r1, [r5, #0x20] add r0, sp, #0 bl FUN_0201EF90 + .ifdef DIAMOND mov r0, #2 mov r1, #0x7d + .else + mov r0, #0xe + ldr r1, _0223A020_PEARL ; 0x007EF000 + .endif ldr r2, [r5, #0x20] lsl r0, r0, #0xc + .ifdef DIAMOND lsl r1, r1, #0x10 + .endif bl FUN_0201EC94 mov r0, #4 bl MOD06_0223B574 @@ -1245,12 +1257,23 @@ MOD06_02239F80: ; 0x02239F80 add sp, #0x14 pop {r4, r5, pc} nop + .ifdef DIAMOND _0223A008: .word 0x00001701 _0223A00C: .word 0x000C8A55 _0223A010: .word 0x002280EF _0223A014: .word 0x000CA424 _0223A018: .word 0x00268C50 _0223A01C: .word 0x000022A2 + .else +_0223A008: .word 0x000010C1 +_0223A00C: .word 0x000D5052 +_0223A010: .word 0x001BFFBD +_0223A014: .word 0x000AA361 +_0223A018: .word 0x0025DFDC +_0223A01C: .word 0x000019A3 +_0223A01C_PEARL: .word 0x0000090C +_0223A020_PEARL: .word 0x007EF000 + .endif thumb_func_start MOD06_0223A020 MOD06_0223A020: ; 0x0223A020 @@ -4163,10 +4186,20 @@ MOD06_0223B598: ; 0x0223B598 str r4, [sp] ldr r4, _0223B5C0 ; =0x000080B5 str r4, [sp, #4] + .ifdef DIAMOND sub r4, r4, #7 + .else + ldr r4, _0223B5C4 ; =0x000085A8 + .endif str r4, [sp, #8] + .ifdef DIAMOND ldr r4, _0223B5C4 ; =0x00029BA8 add r1, r1, r4 + .else + mov r4, #0x4b + lsl r4, r4, #0xc + sub r1, r1, r4 + .endif ldr r4, _0223B5C8 ; =0x00037294 sub r2, r2, r4 ldr r4, _0223B5CC ; =0x000B6876 @@ -4174,12 +4207,24 @@ MOD06_0223B598: ; 0x0223B598 bl MOD06_0223B514 add sp, #0xc pop {r3, r4, pc} + .ifdef DIAMOND .align 2, 0 + .else + nop + .endif +.ifdef DIAMOND _0223B5BC: .word 0x0000F49F _0223B5C0: .word 0x000080B5 _0223B5C4: .word 0x00029BA8 _0223B5C8: .word 0x00037294 _0223B5CC: .word 0x000B6876 +.else +_0223B5BC: .word 0x0000E667 +_0223B5C0: .word 0x0000760B +_0223B5C4: .word 0x000085A8 +_0223B5C8: .word 0x000156B1 +_0223B5CC: .word 0x00099919 +.endif thumb_func_start MOD06_0223B5D0 MOD06_0223B5D0: ; 0x0223B5D0 @@ -4274,8 +4319,13 @@ MOD06_0223B66C: ; 0x0223B66C str r4, [sp, #4] ldr r4, _0223B6A0 ; =0x000080B5 str r4, [sp, #8] + .ifdef DIAMOND sub r4, r4, #7 + .else + ldr r4, _0223B6AC_PEARL ; =0x000085A8 + .endif str r4, [sp, #0xc] + .ifdef DIAMOND mov r4, #0x11 lsl r4, r4, #0xc add r1, r1, r4 @@ -4284,13 +4334,29 @@ MOD06_0223B66C: ; 0x0223B66C sub r2, r2, r4 mov r4, #0xcb lsl r4, r4, #0xc + .else + mov r4, #0x3e + lsl r4, r4, #0xc + sub r1, r1, r4 + mov r4, #0x4f + lsl r4, r4, #0xc + sub r2, r2, r4 + mov r4, #0xd + lsl r4, r4, #0x10 + .endif sub r3, r3, r4 bl MOD06_0223B20C add sp, #0x10 pop {r4, pc} nop + .ifdef DIAMOND _0223B69C: .word 0x0000F49F _0223B6A0: .word 0x000080B5 + .else +_0223B69C: .word 0x0000E667 +_0223B6A0: .word 0x0000760B +_0223B6AC_PEARL: .word 0x000085A8 + .endif thumb_func_start MOD06_0223B6A4 MOD06_0223B6A4: ; 0x0223B6A4 @@ -31366,7 +31432,7 @@ MOD06_02248BC0: ; 0x02248BC0 mov r1, #2 bl MOD06_02248B1C add r0, r4, #0 - mov r1, #0xa + mov r1, #GAME_VERSION bl MOD06_02248B20 add r0, r6, #0 bl FUN_0202B544 @@ -31403,7 +31469,7 @@ MOD06_02248C18: ; 0x02248C18 mov r1, #2 bl MOD06_02248B1C add r0, r4, #0 - mov r1, #0xa + mov r1, #GAME_VERSION bl MOD06_02248B20 mov r0, #0 str r0, [r4, #0x14] diff --git a/arm9/src/main.c b/arm9/src/main.c index 874ea224..3e65666f 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -54,7 +54,7 @@ extern struct Unk21DBE18 MOD52_021D76C8; extern u8 SDK_STATIC_BSS_START[]; const u8 gGameVersion = GAME_VERSION; -const enum GameLanguage gGameLanguage = GAME_LANGUAGE; +const int gGameLanguage = GAME_LANGUAGE; THUMB_FUNC void NitroMain(void) { diff --git a/include/config.h b/include/config.h index 959e3d18..7b75cd06 100644 --- a/include/config.h +++ b/include/config.h @@ -1,7 +1,21 @@ #ifndef POKEDIAMOND_CONFIG_H #define POKEDIAMOND_CONFIG_H -// #define NDEBUG +#define VERSION_SAPPHIRE 1 +#define VERSION_RUBY 2 +#define VERSION_EMERALD 3 +#define VERSION_FIRE_RED 4 +#define VERSION_LEAF_GREEN 5 +#define VERSION_DIAMOND 10 +#define VERSION_PEARL 11 + +#define LANGUAGE_JAPANESE 1 +#define LANGUAGE_ENGLISH 2 +#define LANGUAGE_FRENCH 3 +#define LANGUAGE_ITALIAN 4 +#define LANGUAGE_GERMAN 5 +#define LANGUAGE_SPANISH 7 +#define LANGUAGE_KOREAN 8 #ifdef DIAMOND #define GAME_VERSION VERSION_DIAMOND diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index 1af59830..0f9ba25c 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -341,7 +341,7 @@ typedef enum { GIFT_EEVEE = 12 } EncounterType; -typedef enum GameLanguage OriginLanguage; +typedef int OriginLanguage; typedef enum { ARCEUS_NORMAL = 0, diff --git a/include/global.h b/include/global.h index 2b5771ee..24e4388b 100644 --- a/include/global.h +++ b/include/global.h @@ -11,31 +11,11 @@ #define NELEMS(a) (sizeof(a) / sizeof(*(a))) -enum GameVersion { - VERSION_SAPPHIRE = 1, - VERSION_RUBY = 2, - VERSION_EMERALD = 3, - VERSION_FIRE_RED = 4, - VERSION_LEAF_GREEN = 5, - VERSION_DIAMOND = 10, - VERSION_PEARL = 11, -}; - -enum GameLanguage { - LANGUAGE_JAPANESE = 1, - LANGUAGE_ENGLISH = 2, - LANGUAGE_FRENCH = 3, - LANGUAGE_ITALIAN = 4, - LANGUAGE_GERMAN = 5, - LANGUAGE_SPANISH = 7, - LANGUAGE_KOREAN = 8 -}; - extern void ErrorHandling(void); #define GF_ASSERT(expr) do {if (!(expr)) ErrorHandling();} while (0) -extern const enum GameLanguage gGameLanguage; +extern const int gGameLanguage; extern const u8 gGameVersion; #endif //GUARD_GLOBAL_H @@ -1,9 +1,9 @@ Arm9 { - Static arm9/build/arm9.sbin - OverlayDefs arm9/build/arm9_defs.sbin - OverlayTable arm9/build/arm9_table.sbin - Nef arm9/build/arm9.elf + Static arm9/$(BUILD_DIR)/arm9.sbin + OverlayDefs arm9/$(BUILD_DIR)/arm9_defs.sbin + OverlayTable arm9/$(BUILD_DIR)/arm9_table.sbin + Nef arm9/$(BUILD_DIR)/arm9.elf } Arm7 |