diff options
author | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-04-03 15:19:36 +0200 |
---|---|---|
committer | Rémi Calixte <remicalixte.rmc@gmail.com> | 2021-04-03 15:19:36 +0200 |
commit | 2f95637c2d2e57e06e7e9567f9a45980125ba332 (patch) | |
tree | f9e172d7ef1ca91fe74444f344be3b279b3815e1 | |
parent | 44a082830ef1aaff60449d9dc2b01fdcf8300e7f (diff) | |
parent | 49c8d3b403d1304db782f492637438b2fc7dc07b (diff) |
Merge branch 'master' into unk_0205FA2C
-rw-r--r-- | arm9/arm9.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/scrcmd_13.s | 220 | ||||
-rw-r--r-- | arm9/asm/scrcmd_22.s | 220 | ||||
-rw-r--r-- | arm9/asm/scrcmd_asm.s | 248 | ||||
-rw-r--r-- | arm9/asm/unk_02038C78.s | 38 | ||||
-rw-r--r-- | arm9/global.inc | 38 | ||||
-rw-r--r-- | arm9/src/scrcmd.c | 88 | ||||
-rw-r--r-- | arm9/src/scrcmd_13.c | 111 | ||||
-rw-r--r-- | arm9/src/scrcmd_18_c.c | 2 | ||||
-rw-r--r-- | arm9/src/scrcmd_19.c | 3 | ||||
-rw-r--r-- | arm9/src/scrcmd_20.c | 3 | ||||
-rw-r--r-- | arm9/src/scrcmd_coins.c | 4 | ||||
-rw-r--r-- | arm9/src/scrcmd_items.c | 96 | ||||
-rw-r--r-- | arm9/src/scrcmd_money.c | 4 | ||||
-rw-r--r-- | files/poketool/icongra/poke_icon/.gitignore | 1 | ||||
-rw-r--r-- | files/poketool/icongra/poke_icon/narc_0002.json | 12 | ||||
-rw-r--r-- | files/poketool/icongra/poke_icon/narc_0004.NCER | bin | 202 -> 0 bytes | |||
-rw-r--r-- | files/poketool/icongra/poke_icon/narc_0004.json | 67 | ||||
-rw-r--r-- | filesystem.mk | 1 | ||||
-rw-r--r-- | graphics_rules.mk | 3 | ||||
-rw-r--r-- | include/scrcmd.h | 27 | ||||
-rw-r--r-- | tools/nitrogfx/gfx.c | 31 | ||||
-rw-r--r-- | tools/nitrogfx/json.c | 42 | ||||
-rw-r--r-- | tools/nitrogfx/options.h | 5 |
24 files changed, 483 insertions, 783 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 6066b7ca..05a905ee 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -174,7 +174,7 @@ Static arm9 Object scrcmd_19.o Object scrcmd_20.o Object scrcmd_21.o - Object scrcmd_22.o + Object scrcmd_items.o Object scrcmd_23.o Object scrcmd_24.o Object scrcmd_25.o diff --git a/arm9/asm/scrcmd_13.s b/arm9/asm/scrcmd_13.s deleted file mode 100644 index 1b31ce71..00000000 --- a/arm9/asm/scrcmd_13.s +++ /dev/null @@ -1,220 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_0204387C -FUN_0204387C: ; 0x0204387C - push {r3-r5, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl SavArray_Flags_get - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - cmp r0, #0x0 - bne _020438B2 - add r0, r4, #0x0 - bl FUN_0205F224 - add r5, #0x80 - ldr r0, [r5, #0x0] - bl FUN_0204B9EC - b _020438CA -_020438B2: - cmp r0, #0x1 - bne _020438C6 - add r0, r4, #0x0 - bl FUN_0205F234 - add r5, #0x80 - ldr r0, [r5, #0x0] - bl FUN_0204BA1C - b _020438CA -_020438C6: - bl ErrorHandling -_020438CA: - mov r0, #0x0 - pop {r3-r5, pc} - .balign 4 - - thumb_func_start FUN_020438D0 -FUN_020438D0: ; 0x020438D0 - push {r4-r6, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02022528 - add r6, r0, #0x0 - mov r0, #0x20 - bl AllocMonZeroed - add r5, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FUN_0202C000 - cmp r0, #0x6 - bne _02043908 - mov r0, #0x1 - b _0204390A -_02043908: - mov r0, #0x0 -_0204390A: - strh r0, [r4, #0x0] - add r0, r5, #0x0 - bl FreeToHeap - mov r0, #0x0 - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02043918 -FUN_02043918: ; 0x02043918 - push {r4-r7, lr} - sub sp, #0xc - add r6, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl FUN_02022528 - add r7, r0, #0x0 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl GetStoragePCPointer - str r0, [sp, #0x8] - mov r0, #0x20 - bl AllocMonZeroed - add r4, r0, #0x0 - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_PlayerData_GetProfileAddr - str r0, [sp, #0x4] - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - ldr r0, [r0, #0xc] - bl Sav2_Pokedex_get - mov r5, #0x0 -_0204395C: - add r0, r7, #0x0 - add r1, r5, #0x0 - add r2, r4, #0x0 - bl FUN_0202BFD8 - mov r0, #0x20 - str r0, [sp, #0x0] - ldr r1, [sp, #0x4] - add r0, r4, #0x0 - mov r2, #0x2 - mov r3, #0x0 - bl FUN_0208089C - add r0, r4, #0x0 - bl FUN_020690E4 - add r1, r0, #0x0 - ldr r0, [sp, #0x8] - bl PCStorage_PlaceMonInFirstEmptySlotInAnyBox - cmp r0, #0x0 - bne _0204398C - bl ErrorHandling -_0204398C: - add r0, r6, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - add r1, r4, #0x0 - ldr r0, [r0, #0xc] - bl FUN_0202C144 - add r5, r5, #0x1 - cmp r5, #0x6 - blt _0204395C - add r0, r4, #0x0 - bl FreeToHeap - add r0, r7, #0x0 - bl FUN_0202BEDC - mov r0, #0x0 - add sp, #0xc - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_020439B4 -FUN_020439B4: ; 0x020439B4 - push {r3-r7, lr} - add r4, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - cmp r6, #0x3 - bhi _02043A40 - add r0, r6, r6 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020439EE: ; jump table (using 16-bit offset) - .short _020439F6 - _020439EE - 2; case 0 - .short _02043A02 - _020439EE - 2; case 1 - .short _02043A0E - _020439EE - 2; case 2 - .short _02043A1A - _020439EE - 2; case 3 -_020439F6: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204BAC4 - strh r0, [r5, #0x0] - b _02043A40 -_02043A02: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204BAD4 - strh r0, [r5, #0x0] - b _02043A40 -_02043A0E: - add r4, #0x80 - ldr r0, [r4, #0x0] - bl FUN_0204BAE4 - strh r0, [r5, #0x0] - b _02043A40 -_02043A1A: - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0204BAD4 - add r6, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl FUN_0204BAC4 - add r4, #0x80 - add r7, r0, #0x0 - ldr r0, [r4, #0x0] - bl FUN_0204BAE4 - add r0, r7, r0 - add r0, r6, r0 - strh r0, [r5, #0x0] -_02043A40: - mov r0, #0x0 - pop {r3-r7, pc} diff --git a/arm9/asm/scrcmd_22.s b/arm9/asm/scrcmd_22.s deleted file mode 100644 index 1f354520..00000000 --- a/arm9/asm/scrcmd_22.s +++ /dev/null @@ -1,220 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02045784 -FUN_02045784: ; 0x02045784 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0x4 - bl Bag_AddItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_020457DC -FUN_020457DC: ; 0x020457DC - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0x4 - bl Bag_TakeItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_02045834 -FUN_02045834: ; 0x02045834 - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0x4 - bl Bag_HasSpaceForItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0204588C -FUN_0204588C: ; 0x0204588C - push {r3-r7, lr} - add r4, r0, #0x0 - add r1, r4, #0x0 - add r1, #0x80 - ldr r5, [r1, #0x0] - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r4, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r4, #0x0 - bl ScriptReadHalfword - add r4, #0x80 - add r1, r0, #0x0 - ldr r0, [r4, #0x0] - bl GetVarPointer - add r4, r0, #0x0 - ldr r0, [r5, #0xc] - bl Sav2_Bag_get - add r1, r6, #0x0 - add r2, r7, #0x0 - mov r3, #0xb - bl Bag_HasItem - strh r0, [r4, #0x0] - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_020458E4 -FUN_020458E4: ; 0x020458E4 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - bl FUN_02054CB0 - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02045918 -FUN_02045918: ; 0x02045918 - push {r3-r5, lr} - add r5, r0, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl GetVarPointer - add r5, r0, #0x0 - add r0, r4, #0x0 - mov r1, #0x5 - mov r2, #0xb - bl GetItemAttr - strh r0, [r5, #0x0] - mov r0, #0x0 - pop {r3-r5, pc} - - thumb_func_start FUN_02045950 -FUN_02045950: ; 0x02045950 - mov r0, #0x0 - bx lr - - thumb_func_start FUN_02045954 -FUN_02045954: ; 0x02045954 - mov r0, #0x0 - bx lr diff --git a/arm9/asm/scrcmd_asm.s b/arm9/asm/scrcmd_asm.s index c10ba0f5..3d6645c2 100644 --- a/arm9/asm/scrcmd_asm.s +++ b/arm9/asm/scrcmd_asm.s @@ -5,7 +5,6 @@ .extern UNK_020F3538 .extern gMain .extern FUN_0203A2F0 - .extern FUN_0203AD2C .section .bss @@ -15,253 +14,6 @@ UNK_021C5A0C: ; 0x021C5A0C .text - thumb_func_start FUN_0203ADC4 -FUN_0203ADC4: ; 0x0203ADC4 - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - mov r0, #0x0 - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1F34 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AE4C -FUN_0203AE4C: ; 0x0203AE4C - push {r4-r7, lr} - sub sp, #0x2c - add r5, r0, #0x0 - add r0, #0x80 - ldr r6, [r0, #0x0] - mov r1, #0x0 - add r0, r6, #0x0 - bl FUN_02039438 - str r0, [sp, #0x1c] - add r0, r6, #0x0 - mov r1, #0xf - bl FUN_02039438 - str r0, [sp, #0x20] - ldr r0, [r5, #0x8] - add r1, r0, #0x1 - str r1, [r5, #0x8] - ldrb r0, [r0, #0x0] - add r2, r1, #0x1 - str r0, [sp, #0x18] - str r2, [r5, #0x8] - ldrb r0, [r1, #0x0] - add r1, r2, #0x1 - str r0, [sp, #0x14] - str r1, [r5, #0x8] - ldrb r7, [r2, #0x0] - add r0, r1, #0x1 - str r0, [r5, #0x8] - add r0, r5, #0x0 - ldrb r4, [r1, #0x0] - bl ScriptReadHalfword - str r0, [sp, #0x24] - ldr r1, [sp, #0x24] - add r0, r6, #0x0 - bl GetVarPointer - str r0, [sp, #0x28] - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x1 - bl FUN_02039438 - ldr r1, [sp, #0x28] - str r4, [sp, #0x0] - str r1, [sp, #0x4] - ldr r1, [sp, #0x20] - add r3, r7, #0x0 - ldr r1, [r1, #0x0] - str r1, [sp, #0x8] - str r0, [sp, #0xc] - ldr r0, [r5, #0x78] - str r0, [sp, #0x10] - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x14] - add r0, r6, #0x0 - bl MOD05_021E1F34 - ldr r1, [sp, #0x1c] - str r0, [r1, #0x0] - ldr r0, [sp, #0x24] - str r0, [r5, #0x64] - mov r0, #0x1 - add sp, #0x2c - pop {r4-r7, pc} - .balign 4 - - thumb_func_start FUN_0203AED4 -FUN_0203AED4: ; 0x0203AED4 - push {r3-r7, lr} - add r5, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - add r4, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r6, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r1, r0, #0x0 - add r0, r5, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - bl VarGet - add r7, r0, #0x0 - add r0, r5, #0x0 - bl ScriptReadHalfword - add r5, #0x80 - add r1, r0, #0x0 - ldr r0, [r5, #0x0] - bl VarGet - add r3, r0, #0x0 - lsl r1, r6, #0x18 - lsl r2, r7, #0x18 - lsl r3, r3, #0x18 - ldr r0, [r4, #0x0] - lsr r1, r1, #0x18 - lsr r2, r2, #0x18 - lsr r3, r3, #0x18 - bl MOD05_021E1F58 - mov r0, #0x0 - pop {r3-r7, pc} - - thumb_func_start FUN_0203AF34 -FUN_0203AF34: ; 0x0203AF34 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r0, [r0, #0x0] - bl MOD05_021E1F60 - ldr r1, _0203AF54 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AF54: .word FUN_0203AD2C - - thumb_func_start FUN_0203AF58 -FUN_0203AF58: ; 0x0203AF58 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E26CC - ldr r1, _0203AF80 ; =FUN_0203AD2C - add r0, r4, #0x0 - bl SetupNativeScript - mov r0, #0x1 - pop {r4, pc} - .balign 4 -_0203AF80: .word FUN_0203AD2C - - thumb_func_start FUN_0203AF84 -FUN_0203AF84: ; 0x0203AF84 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E2B80 - mov r0, #0x1 - pop {r4, pc} - - thumb_func_start FUN_0203AFA4 -FUN_0203AFA4: ; 0x0203AFA4 - push {r4, lr} - add r4, r0, #0x0 - add r0, #0x80 - ldr r0, [r0, #0x0] - mov r1, #0x0 - bl FUN_02039438 - ldr r2, [r4, #0x8] - add r1, r2, #0x1 - str r1, [r4, #0x8] - ldrb r1, [r2, #0x0] - ldr r0, [r0, #0x0] - bl MOD05_021E2B9C - mov r0, #0x1 - pop {r4, pc} - thumb_func_start FUN_0203AFC4 FUN_0203AFC4: ; 0x0203AFC4 push {r4-r6, lr} diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s index f8d30d92..a5037d01 100644 --- a/arm9/asm/unk_02038C78.s +++ b/arm9/asm/unk_02038C78.s @@ -217,11 +217,11 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_Unk0041 .word ScrCmd_Unk0042 .word ScrCmd_Unk0043 - .word FUN_0203ADC4 - .word FUN_0203AE4C - .word FUN_0203AED4 - .word FUN_0203AF34 - .word FUN_0203AF58 + .word ScrCmd_Unk0044 + .word ScrCmd_Unk0045 + .word ScrCmd_Unk0046 + .word ScrCmd_Unk0047 + .word ScrCmd_Unk0048 .word FUN_020414E0 .word FUN_020414FC .word FUN_02041518 @@ -272,14 +272,14 @@ gScriptCmdTable: ; 0x020F355C .word ScrCmd_GetCoins .word ScrCmd_GiveCoins .word ScrCmd_TakeCoinsImmediate - .word FUN_02045784 - .word FUN_020457DC - .word FUN_02045834 - .word FUN_0204588C - .word FUN_020458E4 - .word FUN_02045918 - .word FUN_02045950 - .word FUN_02045954 + .word ScrCmd_GiveItem + .word ScrCmd_TakeItem + .word ScrCmd_HasSpaceForItem + .word ScrCmd_HasItem + .word ScrCmd_ItemIdIsTMOrHM + .word ScrCmd_GetItemPocketId + .word ScrCmd_Unk0081 + .word ScrCmd_Unk0082 .word FUN_02045958 .word FUN_020459AC .word FUN_020459E8 @@ -744,10 +744,10 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02041340 .word FUN_02040964 .word ScrCmd_pcfreespace - .word FUN_0204387C - .word FUN_020438D0 - .word FUN_02043918 - .word FUN_020439B4 + .word ScrCmd_Unk0253 + .word ScrCmd_Unk0254 + .word ScrCmd_Unk0255 + .word ScrCmd_Unk0256 .word FUN_0203FE80 .word FUN_0203EDA4 .word FUN_0203EDC8 @@ -868,8 +868,8 @@ gScriptCmdTable: ; 0x020F355C .word FUN_02041100 .word FUN_02041138 .word FUN_02041174 - .word FUN_0203AF84 - .word FUN_0203AFA4 + .word ScrCmd_Unk02CF + .word ScrCmd_Unk02D0 .text diff --git a/arm9/global.inc b/arm9/global.inc index d77b0a72..a00970de 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -2776,13 +2776,13 @@ .extern ScrCmd_Unk029D .extern ScrCmd_Unk0043 .extern ScrCmd_Unk02B9 -.extern FUN_0203ADC4 -.extern FUN_0203AE4C -.extern FUN_0203AED4 -.extern FUN_0203AF34 -.extern FUN_0203AF58 -.extern FUN_0203AF84 -.extern FUN_0203AFA4 +.extern ScrCmd_Unk0044 +.extern ScrCmd_Unk0045 +.extern ScrCmd_Unk0046 +.extern ScrCmd_Unk0047 +.extern ScrCmd_Unk0048 +.extern ScrCmd_Unk02CF +.extern ScrCmd_Unk02D0 .extern FUN_0203AFC4 .extern FUN_0203B024 .extern FUN_0203B148 @@ -3274,10 +3274,10 @@ .extern FUN_02042C8C .extern FUN_02042CBC .extern FUN_02042D1C -.extern FUN_0204387C -.extern FUN_020438D0 -.extern FUN_02043918 -.extern FUN_020439B4 +.extern ScrCmd_Unk0253 +.extern ScrCmd_Unk0254 +.extern ScrCmd_Unk0255 +.extern ScrCmd_Unk0256 .extern ScrCmd_Unk0075 .extern ScrCmd_Unk0076 .extern ScrCmd_Unk0077 @@ -3378,14 +3378,14 @@ .extern FUN_02045678 .extern FUN_020456D4 .extern FUN_0204572C -.extern FUN_02045784 -.extern FUN_020457DC -.extern FUN_02045834 -.extern FUN_0204588C -.extern FUN_020458E4 -.extern FUN_02045918 -.extern FUN_02045950 -.extern FUN_02045954 +.extern ScrCmd_GiveItem +.extern ScrCmd_TakeItem +.extern ScrCmd_HasSpaceForItem +.extern ScrCmd_HasItem +.extern ScrCmd_ItemIdIsTMOrHM +.extern ScrCmd_GetItemPocketId +.extern ScrCmd_Unk0081 +.extern ScrCmd_Unk0082 .extern FUN_02045958 .extern FUN_020459AC .extern FUN_020459E8 diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index bad0d69c..4ad17e51 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -5,8 +5,6 @@ #include "player_data.h" #include "text.h" -extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16); -extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk); extern void *FUN_02039438(struct UnkSavStruct80* arg, u32 id); extern void *CreateScriptContext(struct UnkSavStruct80* arg, u16 id); extern u8 FUN_02058448(u32 param0); @@ -50,6 +48,12 @@ extern void MOD05_021E1C4C(u32 param0, u32 param1, u32 param2); extern void MOD05_021E1C54(u32 param0); extern u32 FUN_02052714(u32 param0); extern void MOD05_021E1ECC(u32 param0); +extern u32 MOD05_021E1F34(struct UnkSavStruct80 *arg, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, u32 param6, u32 *param7, struct MsgData *msgData); +extern void MOD05_021E1F58(u32 param0, u8 param1, u8 param2, u8 param3); +extern void MOD05_021E1F60(u32 param0); +extern void MOD05_021E26CC(u32 param0, u8 param1); +extern void MOD05_021E2B80(u32 param0, u8 param1); +extern void MOD05_021E2B9C(u32 param0, u8 param1); extern u8 *UNK_020F34E0; @@ -66,7 +70,7 @@ static BOOL FUN_0203A8A0(struct ScriptContext *ctx); static BOOL FUN_0203A94C(struct ScriptContext *ctx); static BOOL FUN_0203AA0C(struct ScriptContext *ctx); static BOOL FUN_0203AB00(struct ScriptContext *ctx); -/*static*/ BOOL FUN_0203AD2C(struct ScriptContext *ctx); +static BOOL FUN_0203AD2C(struct ScriptContext *ctx); static BOOL FUN_0203AD78(struct ScriptContext *ctx); extern u8 sScriptConditionTable[6][3]; @@ -1173,7 +1177,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0043(struct ScriptContext *ctx) return TRUE; } -THUMB_FUNC BOOL FUN_0203AD2C(struct ScriptContext *ctx) +THUMB_FUNC static BOOL FUN_0203AD2C(struct ScriptContext *ctx) { u16 *varPtr = GetVarPointer(ctx->unk80, (u16)ctx->data[0]); if (*varPtr == 0xEEEE) @@ -1218,3 +1222,79 @@ THUMB_FUNC static BOOL FUN_0203AD78(struct ScriptContext *ctx) return TRUE; } } + +THUMB_FUNC BOOL ScrCmd_Unk0044(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0); + u32 *unk2 = FUN_02039438(unk80, 15); + u8 unk3 = ScriptReadByte(ctx); + u8 unk4 = ScriptReadByte(ctx); + u8 unk5 = ScriptReadByte(ctx); + u8 unk6 = ScriptReadByte(ctx); + + u16 halfWord = ScriptReadHalfword(ctx); + u16 *varPtr = GetVarPointer(unk80, halfWord); + u32 *unk7 = FUN_02039438(ctx->unk80, 1); + *unk = MOD05_021E1F34(unk80, unk3, unk4, unk5, unk6, varPtr, *unk2, unk7, NULL); + ctx->data[0] = halfWord; + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0045(struct ScriptContext *ctx) +{ + struct UnkSavStruct80 *unk80 = ctx->unk80; + u32 *unk = FUN_02039438(unk80, 0); + u32 *unk2 = FUN_02039438(unk80, 15); + u8 unk3 = ScriptReadByte(ctx); + u8 unk4 = ScriptReadByte(ctx); + u8 unk5 = ScriptReadByte(ctx); + u8 unk6 = ScriptReadByte(ctx); + + u16 halfWord = ScriptReadHalfword(ctx); + u16 *varPtr = GetVarPointer(unk80, halfWord); + u32 *unk7 = FUN_02039438(ctx->unk80, 1); + *unk = MOD05_021E1F34(unk80, unk3, unk4, unk5, unk6, varPtr, *unk2, unk7, ctx->msgData); + ctx->data[0] = halfWord; + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0046(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + u16 unk2 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk3 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 unk4 = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + MOD05_021E1F58(*unk, (u8)unk2, (u8)unk3, (u8)unk4); + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0047(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E1F60(*unk); + SetupNativeScript(ctx, FUN_0203AD2C); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0048(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E26CC(*unk, ScriptReadByte(ctx)); + SetupNativeScript(ctx, FUN_0203AD2C); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E2B80(*unk, ScriptReadByte(ctx)); + return TRUE; +} + +THUMB_FUNC BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx) +{ + u32 *unk = FUN_02039438(ctx->unk80, 0); + MOD05_021E2B9C(*unk, ScriptReadByte(ctx)); + return TRUE; +} diff --git a/arm9/src/scrcmd_13.c b/arm9/src/scrcmd_13.c new file mode 100644 index 00000000..3b21facc --- /dev/null +++ b/arm9/src/scrcmd_13.c @@ -0,0 +1,111 @@ +#include "scrcmd.h" +#include "event_data.h" +#include "heap.h" +#include "pokedex.h" +#include "pokemon_storage_system.h" +#include "unk_0202C144.h" + +extern struct PCStorage* GetStoragePCPointer(struct SaveBlock2* sav2); +extern void* FUN_02022528(struct SaveBlock2* sav2); +extern void FUN_0202BEDC(struct Pokemon* pokemon); +extern void FUN_0202BFD8(void* a0, s32 a1, struct Pokemon* pokemon); +extern u16 FUN_0202C000(struct Pokemon* pokemon); +extern void FUN_0204B9EC(struct UnkSavStruct80*); +extern u32 FUN_0204BA1C(struct UnkSavStruct80*); +extern u16 FUN_0204BAC4(struct UnkSavStruct80*); +extern u16 FUN_0204BAD4(struct UnkSavStruct80*); +extern u16 FUN_0204BAE4(struct UnkSavStruct80*); +extern void FUN_0205F224(struct ScriptState* state); +extern void FUN_0205F234(struct ScriptState* state); +extern void FUN_0208089C(struct Pokemon* pokemon, struct PlayerData* player, u32 a2, u32 a3, u32 heap_id); + +THUMB_FUNC BOOL ScrCmd_Unk0253(struct ScriptContext* ctx) +{ + struct ScriptState* state = SavArray_Flags_get(ctx->unk80->saveBlock2); + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + + if (unk == 0) + { + FUN_0205F224(state); + FUN_0204B9EC(ctx->unk80); + } + else if (unk == 1) + { + FUN_0205F234(state); + FUN_0204BA1C(ctx->unk80); + } + else + { + GF_ASSERT(FALSE); + } + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0254(struct ScriptContext* ctx) +{ + void* unk = FUN_02022528(ctx->unk80->saveBlock2); + struct Pokemon* pokemon = AllocMonZeroed(32); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + u16 eggs = FUN_0202C000(unk); + if (eggs == 6) { + *ret_ptr = 1; + } else { + *ret_ptr = 0; + } + + FreeToHeap(pokemon); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0255(struct ScriptContext* ctx) +{ + void* unk = FUN_02022528(ctx->unk80->saveBlock2); + struct PCStorage* pc = GetStoragePCPointer(ctx->unk80->saveBlock2); + struct Pokemon* pokemon = AllocMonZeroed(32); + struct PlayerData* player = Sav2_PlayerData_GetProfileAddr(ctx->unk80->saveBlock2); + struct Pokedex* pokedex = Sav2_Pokedex_get(ctx->unk80->saveBlock2); // unused + + for (s32 i = 0; i < PARTY_SIZE; i++) + { + FUN_0202BFD8(unk, i, pokemon); + FUN_0208089C(pokemon, player, 2, 0, 32); + + struct BoxPokemon* box_mon = FUN_020690E4(pokemon); + GF_ASSERT(PCStorage_PlaceMonInFirstEmptySlotInAnyBox(pc, box_mon)); + + FUN_0202C144(ctx->unk80->saveBlock2, pokemon); + } + + FreeToHeap(pokemon); + FUN_0202BEDC(unk); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0256(struct ScriptContext* ctx) +{ + u16 unk = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + switch (unk) + { + case 0: + *ret_ptr = FUN_0204BAC4(ctx->unk80); + break; + case 1: + *ret_ptr = FUN_0204BAD4(ctx->unk80); + break; + case 2: + *ret_ptr = FUN_0204BAE4(ctx->unk80); + break; + case 3: + // For some reason, mwcc puts the FUN_0204BAD4 call before the FUN_0204BAC4 and FUN_0204BAE4 calls. + *ret_ptr = (u16)(FUN_0204BAC4(ctx->unk80) + FUN_0204BAE4(ctx->unk80) + FUN_0204BAD4(ctx->unk80)); + break; + } + + return FALSE; +} diff --git a/arm9/src/scrcmd_18_c.c b/arm9/src/scrcmd_18_c.c index c683bc8c..d4437c5f 100644 --- a/arm9/src/scrcmd_18_c.c +++ b/arm9/src/scrcmd_18_c.c @@ -6,8 +6,6 @@ #include "map_header.h"
#include "scrcmd.h"
-extern u16 VarGet(struct UnkSavStruct80* arg, u16 wk);
-extern u16 *GetVarPointer(struct UnkSavStruct80* arg, u16);
extern BOOL GiveMon(u32 heap_id, struct SaveBlock2 * sav2, u16 species, u8 level, u16 item, u32 mapSec, u8 encounterType);
THUMB_FUNC BOOL ScrCmd_GiveMon(struct ScriptContext* ctx)
diff --git a/arm9/src/scrcmd_19.c b/arm9/src/scrcmd_19.c index f0fb9b42..b0a201b7 100644 --- a/arm9/src/scrcmd_19.c +++ b/arm9/src/scrcmd_19.c @@ -1,9 +1,6 @@ #include "scrcmd.h" #include "bag.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); - const u16 UNK_020F450C[7][2] = { { 0x0067, 0x008E }, { 0x0065, 0x008A }, diff --git a/arm9/src/scrcmd_20.c b/arm9/src/scrcmd_20.c index bf4fb7f1..882126a0 100644 --- a/arm9/src/scrcmd_20.c +++ b/arm9/src/scrcmd_20.c @@ -1,8 +1,5 @@ #include "scrcmd.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); - const u16 UNK_020F452A[19][2] = { { 0x00FB, 0x03E8 }, { 0x0109, 0x03E8 }, diff --git a/arm9/src/scrcmd_coins.c b/arm9/src/scrcmd_coins.c index 5f7c4aa8..59638c83 100644 --- a/arm9/src/scrcmd_coins.c +++ b/arm9/src/scrcmd_coins.c @@ -1,10 +1,6 @@ #include "scrcmd.h" #include "coins.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); -extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk); - extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx); extern u32 MOD05_021E2950(struct UnkSavStruct80* arg, u8, u8); diff --git a/arm9/src/scrcmd_items.c b/arm9/src/scrcmd_items.c new file mode 100644 index 00000000..0184d02e --- /dev/null +++ b/arm9/src/scrcmd_items.c @@ -0,0 +1,96 @@ +#include "scrcmd.h" +#include "bag.h" + +extern BOOL FUN_02054CB0(u16 item_id); + +THUMB_FUNC BOOL ScrCmd_GiveItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* item_was_added = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *item_was_added = (u16)Bag_AddItem(bag, item_id, quantity, 4); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_TakeItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* item_was_taken = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *item_was_taken = (u16)Bag_TakeItem(bag, item_id, quantity, 4); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasSpaceForItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* has_space = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *has_space = (u16)Bag_HasSpaceForItem(bag, item_id, quantity, 4); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_HasItem(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16 quantity = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* has_item = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + struct Bag* bag = Sav2_Bag_get(sav_ptr->saveBlock2); + + *has_item = (u16)Bag_HasItem(bag, item_id, quantity, 11); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_ItemIdIsTMOrHM(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* is_tm_or_hm = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *is_tm_or_hm = (u16)FUN_02054CB0(item_id); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_GetItemPocketId(struct ScriptContext* ctx) +{ + struct UnkSavStruct80* sav_ptr = ctx->unk80; + + u16 item_id = VarGet(ctx->unk80, ScriptReadHalfword(ctx)); + u16* pocket = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); + + *pocket = (u16)GetItemAttr(item_id, ITEMATTR_POCKET, 11); + + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0081(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} + +THUMB_FUNC BOOL ScrCmd_Unk0082(struct ScriptContext* ctx) +{ +#pragma unused(ctx) + return FALSE; +} diff --git a/arm9/src/scrcmd_money.c b/arm9/src/scrcmd_money.c index b61a7ff7..d2254844 100644 --- a/arm9/src/scrcmd_money.c +++ b/arm9/src/scrcmd_money.c @@ -1,10 +1,6 @@ #include "scrcmd.h" #include "player_data.h" -extern u16 VarGet(struct UnkSavStruct80* arg, u16); -extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); -extern struct SaveBlock2 * ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk); - extern void * FUN_02039438(struct UnkSavStruct80* arg, u8 idx); extern u32 MOD05_021E27E8(struct UnkSavStruct80* arg, u8, u8); diff --git a/files/poketool/icongra/poke_icon/.gitignore b/files/poketool/icongra/poke_icon/.gitignore index 15216251..8f4afa7f 100644 --- a/files/poketool/icongra/poke_icon/.gitignore +++ b/files/poketool/icongra/poke_icon/.gitignore @@ -1,5 +1,6 @@ narc_0000.NCLR narc_0002.NCER +narc_0004.NCER narc_0007.NCGR narc_0008.NCGR narc_0009.NCGR diff --git a/files/poketool/icongra/poke_icon/narc_0002.json b/files/poketool/icongra/poke_icon/narc_0002.json index a0d15511..defb5b41 100644 --- a/files/poketool/icongra/poke_icon/narc_0002.json +++ b/files/poketool/icongra/poke_icon/narc_0002.json @@ -1,5 +1,5 @@ { - "label": true, + "labelEnabled": true, "extended": true, "imageHeight": 32, "imageWidth": 32, @@ -31,8 +31,7 @@ "Priority": 0, "Palette": 0 } - }, - "label": "CellAnime0" + } }, { "readOnly": 2054, @@ -60,8 +59,9 @@ "Priority": 0, "Palette": 0 } - }, - "label": "CellAnime1" + } } - ] + ], + "labels": ["CellAnime0", "CellAnime1"], + "labelCount": 2 } diff --git a/files/poketool/icongra/poke_icon/narc_0004.NCER b/files/poketool/icongra/poke_icon/narc_0004.NCER Binary files differdeleted file mode 100644 index 10193211..00000000 --- a/files/poketool/icongra/poke_icon/narc_0004.NCER +++ /dev/null diff --git a/files/poketool/icongra/poke_icon/narc_0004.json b/files/poketool/icongra/poke_icon/narc_0004.json new file mode 100644 index 00000000..3d8b8b80 --- /dev/null +++ b/files/poketool/icongra/poke_icon/narc_0004.json @@ -0,0 +1,67 @@ +{ + "labelEnabled": true, + "extended": true, + "imageHeight": 32, + "imageWidth": 32, + "cellCount": 2, + "cells": [ + { + "readOnly": 2054, + "maxX": 15, + "maxY": 15, + "minX": 65520, + "minY": 65520, + "OAM": { + "Attr0": { + "YCoordinate": 240, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 496, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 0, + "Priority": 0, + "Palette": 0 + } + } + }, + { + "readOnly": 2054, + "maxX": 15, + "maxY": 15, + "minX": 65520, + "minY": 65520, + "OAM": { + "Attr0": { + "YCoordinate": 240, + "Rotation": false, + "SizeDisable": false, + "Mode": 0, + "Mosaic": false, + "Colours": 16, + "Shape": 0 + }, + "Attr1": { + "XCoordinate": 496, + "RotationScaling": 0, + "Size": 2 + }, + "Attr2": { + "CharName": 16, + "Priority": 0, + "Palette": 0 + } + } + } + ], + "labels": ["CellAnime0", "CellAnime1", "CellAnime2", "CellAnime3", "CellAnime4", "CellAnime5"], + "labelCount": 6 +} diff --git a/filesystem.mk b/filesystem.mk index 8aaff73f..4264c367 100644 --- a/filesystem.mk +++ b/filesystem.mk @@ -2588,6 +2588,7 @@ files/poketool/pokegra/pokegra.narc: \ files/poketool/icongra/poke_icon.narc: \ files/poketool/icongra/poke_icon/narc_0000.NCLR \ files/poketool/icongra/poke_icon/narc_0002.NCER \ + files/poketool/icongra/poke_icon/narc_0004.NCER \ files/poketool/icongra/poke_icon/narc_0007.NCGR \ files/poketool/icongra/poke_icon/narc_0008.NCGR \ files/poketool/icongra/poke_icon/narc_0009.NCGR \ diff --git a/graphics_rules.mk b/graphics_rules.mk index dd2525f1..8abbbbaa 100644 --- a/graphics_rules.mk +++ b/graphics_rules.mk @@ -880,7 +880,8 @@ NCLR_CLEAN_LIST := files/application/wifi_earth/wifi_earth/narc_0006.NCLR \ files/poketool/trgra/trfgra/narc_0192.NCLR \ files/poketool/trgra/trfgra/narc_0194.NCLR \ -NCER_CLEAN_LIST := files/poketool/icongra/poke_icon/narc_0002.NCER +NCER_CLEAN_LIST := files/poketool/icongra/poke_icon/narc_0002.NCER \ + files/poketool/icongra/poke_icon/narc_0004.NCER NSCR_CLEAN_LIST := files/demo/title/titledemo/narc_0000.NSCR \ files/demo/title/titledemo/narc_0008.NSCR \ diff --git a/include/scrcmd.h b/include/scrcmd.h index 44151627..4c155f0b 100644 --- a/include/scrcmd.h +++ b/include/scrcmd.h @@ -4,6 +4,10 @@ #include "global.h" #include "script.h" +extern u16 VarGet(struct UnkSavStruct80* arg, u16); +extern u16* GetVarPointer(struct UnkSavStruct80* arg, u16); +extern struct SaveBlock2* ScriptEnvironment_GetSav2Ptr(struct UnkSavStruct80* unk); + struct UnkStruct_0203A288 { u8 unk0; u8 unk1; @@ -94,6 +98,19 @@ BOOL ScrCmd_Unk0042(struct ScriptContext *ctx); BOOL ScrCmd_Unk029D(struct ScriptContext *ctx); BOOL ScrCmd_Unk0043(struct ScriptContext *ctx); BOOL ScrCmd_Unk02B9(struct ScriptContext *ctx); +BOOL ScrCmd_Unk0044(struct ScriptContext *ctx); +BOOL ScrCmd_Unk0045(struct ScriptContext *ctx); +BOOL ScrCmd_Unk0046(struct ScriptContext *ctx); +BOOL ScrCmd_Unk0047(struct ScriptContext *ctx); +BOOL ScrCmd_Unk0048(struct ScriptContext *ctx); +BOOL ScrCmd_Unk02CF(struct ScriptContext *ctx); +BOOL ScrCmd_Unk02D0(struct ScriptContext *ctx); + +//scrcmd_13.c +BOOL ScrCmd_Unk0253(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0254(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0255(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0256(struct ScriptContext* ctx); //scrcmd_coins.c BOOL ScrCmd_Unk0075(struct ScriptContext* ctx); @@ -130,6 +147,16 @@ BOOL ScrCmd_Unk01F3(struct ScriptContext* ctx); //scrcmd_20.c BOOL ScrCmd_Unk02A6(struct ScriptContext* ctx); +//scrcmd_items.c +BOOL ScrCmd_GiveItem(struct ScriptContext* ctx); +BOOL ScrCmd_TakeItem(struct ScriptContext* ctx); +BOOL ScrCmd_HasSpaceForItem(struct ScriptContext* ctx); +BOOL ScrCmd_HasItem(struct ScriptContext* ctx); +BOOL ScrCmd_ItemIdIsTMOrHM(struct ScriptContext* ctx); +BOOL ScrCmd_GetItemPocketId(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0081(struct ScriptContext* ctx); +BOOL ScrCmd_Unk0082(struct ScriptContext* ctx); + //scrcmd_25.c BOOL ScrCmd_Unk02EF(struct ScriptContext* ctx); BOOL ScrCmd_Unk02F0(struct ScriptContext* ctx); diff --git a/tools/nitrogfx/gfx.c b/tools/nitrogfx/gfx.c index be01a456..305fbeb2 100644 --- a/tools/nitrogfx/gfx.c +++ b/tools/nitrogfx/gfx.c @@ -744,16 +744,17 @@ void WriteNtrCell(char *path, struct JsonToCellOptions *options) if (fp == NULL) FATAL_ERROR("Failed to open \"%s\" for writing.\n", path); - unsigned int totalSize = (options->label > 0 ? 0x34 : 0x20) + options->cellCount * (options->extended ? 0x16 : 0xe); + unsigned int totalSize = (options->labelEnabled > 0 ? 0x34 : 0x20) + options->cellCount * (options->extended ? 0x16 : 0xe); - if (options->label) + if (options->labelEnabled) { - for (int i = 0; i < options->cellCount; i++) { - totalSize += strlen(options->cells[i]->label) + 5; //strlen + terminator + pointer + for (int j = 0; j < options->labelCount; j++) + { + totalSize += strlen(options->labels[j]) + 5; //strlen + terminator + pointer } } - WriteGenericNtrHeader(fp, "RECN", totalSize, true, false, options->label ? 3 : 1); + WriteGenericNtrHeader(fp, "RECN", totalSize, true, false, options->labelEnabled ? 3 : 1); unsigned char KBECHeader[0x20] = { @@ -858,12 +859,12 @@ void WriteNtrCell(char *path, struct JsonToCellOptions *options) free(KBECContents); - if (options->label) + if (options->labelEnabled) { - unsigned int lablSize = 8 + options->cellCount * 4; - for (i = 0; i < options->cellCount; i++) + unsigned int lablSize = 8; + for (int j = 0; j < options->labelCount; j++) { - lablSize += strlen(options->cells[i]->label) + 1; + lablSize += strlen(options->labels[j]) + 5; } unsigned char *labl = malloc(lablSize); @@ -876,18 +877,20 @@ void WriteNtrCell(char *path, struct JsonToCellOptions *options) unsigned int position = 0; - for (i = 0; i < options->cellCount * 4; i += 4) + i = 0; + for (int j = 0; j < options->labelCount; j++) { labl[i + 8] = position & 0xff; labl[i + 9] = position >> 8; - position += strlen(options->cells[i / 4]->label) + 1; + position += strlen(options->labels[j]) + 1; + i += 4; } - for (int j = 0; j < options->cellCount; j++) + for (int j = 0; j < options->labelCount; j++) { - strcpy((char *) (labl + (i + 8)), options->cells[j]->label); - i += strlen(options->cells[j]->label) + 1; + strcpy((char *) (labl + (i + 8)), options->labels[j]); + i += strlen(options->labels[j]) + 1; } fwrite(labl, 1, lablSize, fp); diff --git a/tools/nitrogfx/json.c b/tools/nitrogfx/json.c index 53f83ceb..aad325be 100644 --- a/tools/nitrogfx/json.c +++ b/tools/nitrogfx/json.c @@ -46,13 +46,13 @@ struct JsonToCellOptions *ParseNCERJson(char *path) FATAL_ERROR("Error in line \"%s\"\n", errorPtr); } - cJSON *labelBool = cJSON_GetObjectItemCaseSensitive(json, "label"); + cJSON *labelBool = cJSON_GetObjectItemCaseSensitive(json, "labelEnabled"); cJSON *extended = cJSON_GetObjectItemCaseSensitive(json, "extended"); cJSON *imageHeight = cJSON_GetObjectItemCaseSensitive(json, "imageHeight"); cJSON *imageWidth = cJSON_GetObjectItemCaseSensitive(json, "imageWidth"); cJSON *cellCount = cJSON_GetObjectItemCaseSensitive(json, "cellCount"); - options->label = GetBool(labelBool); + options->labelEnabled = GetBool(labelBool); options->extended = GetBool(extended); options->imageHeight = GetInt(imageHeight); options->imageWidth = GetInt(imageWidth); @@ -60,6 +60,26 @@ struct JsonToCellOptions *ParseNCERJson(char *path) options->cells = malloc(sizeof(struct Cell *) * options->cellCount); + + if (options->labelEnabled) + { + cJSON *labelCount = cJSON_GetObjectItemCaseSensitive(json, "labelCount"); + options->labelCount = GetInt(labelCount); + options->labels = malloc(sizeof(char *) * options->labelCount); + + cJSON *labels = cJSON_GetObjectItemCaseSensitive(json, "labels"); + cJSON *label = NULL; + + int j = 0; + cJSON_ArrayForEach(label, labels) + { + char *labelString = GetString(label); + options->labels[j] = malloc(strlen(labelString) + 1); + strcpy(options->labels[j], labelString); + j++; + } + } + for (int i = 0; i < options->cellCount; i++) { options->cells[i] = malloc(sizeof(struct Cell)); @@ -89,14 +109,6 @@ struct JsonToCellOptions *ParseNCERJson(char *path) options->cells[i]->minX = (short)GetInt(minX); options->cells[i]->minY = (short)GetInt(minY); } - - if (options->label) - { - cJSON *label = cJSON_GetObjectItemCaseSensitive(cell, "label"); - char *labelString = GetString(label); - options->cells[i]->label = malloc(strlen(labelString) + 1); - strcpy(options->cells[i]->label, labelString); - } //OAM data cJSON *OAM = cJSON_GetObjectItemCaseSensitive(cell, "OAM"); @@ -221,11 +233,15 @@ void FreeNCERCell(struct JsonToCellOptions *options) { for (int i = 0; i < options->cellCount; i++) { - if (options->label) + free(options->cells[i]); + } + if (options->labelEnabled) + { + for (int j = 0; j < options->labelCount; j++) { - free(options->cells[i]->label); + free(options->labels[j]); } - free(options->cells[i]); + free(options->labels); } free(options); } diff --git a/tools/nitrogfx/options.h b/tools/nitrogfx/options.h index f4626df9..780c83e6 100644 --- a/tools/nitrogfx/options.h +++ b/tools/nitrogfx/options.h @@ -69,16 +69,17 @@ struct Cell { short minX; short minY; struct OAM oam; - char *label; }; struct JsonToCellOptions { - bool label; + bool labelEnabled; bool extended; int imageHeight; int imageWidth; int cellCount; struct Cell **cells; + char **labels; + int labelCount; }; struct JsonToScreenOptions { |