summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--arm9/modules/06/asm/module_06.s70
-rw-r--r--arm9/src/main.c2
-rw-r--r--include/config.h16
-rw-r--r--include/constants/pokemon.h2
-rw-r--r--include/global.h22
-rw-r--r--rom.rsf8
7 files changed, 91 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index aa1465fb..29848c66 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/rom.rsf b/rom.rsf
index ac152ade..bf77484a 100644
--- a/rom.rsf
+++ b/rom.rsf
@@ -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