From 82f0bccff5bf151f8b26c4d098d272bba387011e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 08:42:55 -0400 Subject: Mystery Event Script Macros; start disassembling the raw data in debug_menu_3.s --- data/debug_menu_3.s | 35 +++++++++++++++--- include/macros.inc | 1 + include/macros/me_script.inc | 88 ++++++++++++++++++++++++++++++++++++++++++++ src/debug/unk_debug_menu_3.c | 8 ++++ 4 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 include/macros/me_script.inc create mode 100644 src/debug/unk_debug_menu_3.c diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index ed4bb599b..a032d502d 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -1,15 +1,35 @@ .if DEBUG - +#include "constants/decorations.h" +#include "constants/flags.h" +#include "constants/game_stat.h" +#include "constants/items.h" +#include "constants/map_objects.h" +#include "constants/maps.h" +#include "constants/moves.h" +#include "constants/opponents.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/weather.h" +#include "constants/vars.h" .include "include/macros.inc" .include "constants/constants.inc" .section .rodata gUnknown_Debug_845DAE1:: - .byte 0x01, 0xe1, 0xda, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x45, 0x08, 0xb2, 0xdd, 0x45, 0x08, 0x06, 0x08 - .byte 0x01, 0x01, 0x56, 0xdb, 0x45, 0x08, 0x0d, 0xdd, 0x45, 0x08, 0x0b, 0x01, 0x05, 0x13, 0x01, 0x05, 0x0d, 0xdd, 0x45, 0x08, 0x02, 0xc6, 0xd5, 0xe9, 0xda, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xd6, 0xd9 - .byte 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0xfe, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0x00 - .byte 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc, 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x56, 0xdb, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21 + me_checkcompat gUnknown_Debug_845DAE1, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845DAFF, gUnknown_Debug_845DDB2 +_0845DAFF: + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _845DB56, _0845DD0D + me_setrecordmixinggift 0x1, 0x5, ITEM_EON_TICKET + me_runscript _0845DD0D + me_end + +_0845DB16: + .string "Lauf und besuche deinen Vater in der\nARENA von BLÜTENBURG CITY.$" + +_845DB56: + .byte 0xb8, 0x56, 0xdb, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21 .byte 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0xb4 .byte 0xdb, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xbe, 0xdb, 0x45, 0x08, 0x66, 0x6d, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0xb5, 0xdb, 0x45, 0x08, 0x1a, 0x00, 0x80, 0x13 .byte 0x01, 0x1a, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0x53, 0x08, 0xbd, 0x00, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x0d, 0xbd, 0x94, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x02, 0xd0, 0xbb, 0xce @@ -23,7 +43,10 @@ gUnknown_Debug_845DAE1:: .byte 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae, 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe7, 0x00, 0xbc, 0xbf, 0xcf, 0xce, 0xbf, 0xc6, 0xcd, 0x00, 0xdd, 0xe7 .byte 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xfb, 0xc6, 0xd5, 0xdb, 0xd9, 0xe6, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0xdd, 0xdb, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe6, 0x00, 0xbc, 0xd5, 0xe7 .byte 0xdd, 0xe7, 0xae, 0xc3, 0xe8, 0xd9, 0xe1, 0xe7, 0x00, 0xdd, 0xe2, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe1, 0x00, 0xca, 0xbd, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xdf, 0xe3, 0xe1, 0xe1, 0x00, 0xd8 - .byte 0xd5, 0xe2, 0xe2, 0x00, 0xeb, 0xdd, 0xd9, 0xd8, 0xd9, 0xe6, 0xad, 0xff, 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45 + .byte 0xd5, 0xe2, 0xe2, 0x00, 0xeb, 0xdd, 0xd9, 0xd8, 0xd9, 0xe6, 0xad, 0xff + +_0845DD0D: + .byte 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45 .byte 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21 .byte 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x5b, 0xdd, 0x45, 0x08, 0xbe, 0x16, 0xdb, 0x45, 0x08, 0x0e, 0x02, 0x02, 0xbe, 0x63, 0xdd, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xbe, 0x95, 0xdd, 0x45, 0x08, 0x0e .byte 0x03, 0x02, 0xbe, 0xdd, 0xd9, 0xe7, 0xd9, 0xe7, 0x00, 0xc1, 0xbf, 0xcd, 0xbd, 0xc2, 0xbf, 0xc2, 0xbf, 0xc8, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xe2, 0xe9, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xe1 diff --git a/include/macros.inc b/include/macros.inc index f34353079..93a029cdd 100644 --- a/include/macros.inc +++ b/include/macros.inc @@ -4,6 +4,7 @@ .include "include/macros/pokemon_data.inc" .include "include/macros/ec.inc" .include "include/macros/map.inc" + .include "include/macros/me_script.inc" .macro region_map_location x, y, width, height, name .byte \x diff --git a/include/macros/me_script.inc b/include/macros/me_script.inc new file mode 100644 index 000000000..4d5f59d1b --- /dev/null +++ b/include/macros/me_script.inc @@ -0,0 +1,88 @@ + .macro me_nop + .byte 0 + .endm + + .macro me_checkcompat word, v1, v2, v3, v4 + .byte 1 + .4byte \word + .2byte \v1 + .4byte \v2 + .2byte \v3 + .4byte \v4 + .endm + + .macro me_end + .byte 2 + .endm + + .macro me_setmsg value, str + .byte 3 + .byte \value + .4byte \str + .endm + + .macro me_setstatus value + .byte 4 + .byte \value + .endm + + .macro me_runscript script + .byte 5 + .4byte \script + .endm + + .macro me_initramscript mapId, objId, script, end + .byte 6 + map \mapId + .byte \objId + .4byte \script, \end + .endm + + .macro me_setenigmaberry berry + .byte 7 + .4byte \berry + .endm + + .macro me_giveribbon index, ribbonId + .byte 8 + .byte \index, \ribbonId + .endm + + .macro me_givenationaldex + .byte 9 + .endm + + .macro me_addrareword word + .byte 10 + .byte \word + .endm + + .macro me_setrecordmixinggift unk, quantity, itemId + .byte 11 + .byte \unk, \quantity + .2byte \itemId + .endm + + .macro me_givepokemon data + .byte 12 + .4byte \data + .endm + + .macro me_addtrainer data + .byte 13 + .4byte \data + .endm + + .macro me_enableresetrtc + .byte 14 + .endm + + .macro me_checksum checksum, data, dataEnd + .byte 15 + .4byte \checksum, \data, \dataEnd + .endm + + .macro me_crc crc, data, dataEnd + .byte 16 + .4byte \crc, \data, \dataEnd + .endm diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c new file mode 100644 index 000000000..5f2ede62a --- /dev/null +++ b/src/debug/unk_debug_menu_3.c @@ -0,0 +1,8 @@ +#if DEBUG + +#include "global.h" +#include "debug.h" + + + +#endif // DEBUG -- cgit v1.2.3 From 0e2b97d644f9d95e1d43ac949df757f5eaccb9d2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 10:14:40 -0400 Subject: Disassemble some strings --- data/debug_menu_3.s | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index a032d502d..23cd67053 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -32,26 +32,20 @@ _845DB56: .byte 0xb8, 0x56, 0xdb, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21 .byte 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0xb4 .byte 0xdb, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xbe, 0xdb, 0x45, 0x08, 0x66, 0x6d, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0xb5, 0xdb, 0x45, 0x08, 0x1a, 0x00, 0x80, 0x13 - .byte 0x01, 0x1a, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0x53, 0x08, 0xbd, 0x00, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x0d, 0xbd, 0x94, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x02, 0xd0, 0xbb, 0xce - .byte 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xab, 0x00, 0xcd, 0xd7, 0xdc, 0xf5, 0xe2, 0xb8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xee, 0xe9, 0x00, 0xe7, 0xd9, 0xdc, 0xd9, 0xe2, 0xab, 0xfe, 0xc2, 0xdd - .byte 0xd9, 0xe6, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xbc, 0xe6, 0xdd, 0xd9, 0xda, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0xb8, 0x00, 0xfd, 0x01, 0xad, 0xff, 0xd0 - .byte 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xd6, 0xdd, 0xe2, 0x00, 0xe1, 0xdd, 0xe6, 0x00, 0xe2, 0xdd, 0xd7, 0xdc, 0xe8, 0x00, 0xe7, 0xdd, 0xd7, 0xdc, 0xd9, 0xe6, 0xb8, 0x00 - .byte 0xd9, 0xe7, 0xfe, 0xdf, 0xf5, 0xe2, 0xe2, 0xe8, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xce, 0xc3, 0xbd, 0xc5, 0xbf, 0xce, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xc0, 0xf4 - .byte 0xdc, 0xe6, 0xd9, 0x00, 0xe7, 0xd9, 0xdd, 0xe2, 0xad, 0xfb, 0xbe, 0xe9, 0x00, 0xe7, 0xe3, 0xe0, 0xe0, 0xe8, 0xd9, 0xe7, 0xe8, 0x00, 0xe2, 0xd5, 0xd7, 0xdc, 0x00, 0xcd, 0xbf, 0xbf, 0xc1, 0xcc - .byte 0xbb, 0xcd, 0xcf, 0xc6, 0xbc, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0x00, 0xdb, 0xd9, 0xdc, 0xd9, 0xe2, 0xfe, 0xe9, 0xe2, 0xd8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xd8, 0xe3, 0xe6, 0xe8, 0x00, 0xdb - .byte 0xd9, 0xe2, 0xd5, 0xe9, 0xd9, 0xe6, 0x00, 0xd9, 0xe6, 0xdf, 0xe9, 0xe2, 0xd8, 0xdd, 0xdb, 0xd9, 0xe2, 0xad, 0xff, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xb8, 0x00, 0xd8, 0xdd - .byte 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae, 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe7, 0x00, 0xbc, 0xbf, 0xcf, 0xce, 0xbf, 0xc6, 0xcd, 0x00, 0xdd, 0xe7 - .byte 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xfb, 0xc6, 0xd5, 0xdb, 0xd9, 0xe6, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0xdd, 0xdb, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe6, 0x00, 0xbc, 0xd5, 0xe7 - .byte 0xdd, 0xe7, 0xae, 0xc3, 0xe8, 0xd9, 0xe1, 0xe7, 0x00, 0xdd, 0xe2, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe1, 0x00, 0xca, 0xbd, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xdf, 0xe3, 0xe1, 0xe1, 0x00, 0xd8 - .byte 0xd5, 0xe2, 0xe2, 0x00, 0xeb, 0xdd, 0xd9, 0xd8, 0xd9, 0xe6, 0xad, 0xff + .byte 0x01, 0x1a, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0x53, 0x08, 0xbd, 0x00, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x0d, 0xbd, 0x94, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x02 + + .string "VATER: {PLAYER}! Schön, dich zu sehen!\nHier ist ein Brief für dich, {PLAYER}.$" + .string "VATER: Ich bin mir nicht sicher, es\nkönnte ein TICKET für eine Fähre sein.\pDu solltest nach SEEGRASULB CITY gehen\nund dich dort genauer erkundigen.$" + .string "VATER: {PLAYER}, die BASIS-TASCHE\ndeines BEUTELS ist voll.\pLagere einige deiner Basis-Items in\ndeinem PC und komm dann wieder.$" _0845DD0D: .byte 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45 .byte 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21 .byte 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x5b, 0xdd, 0x45, 0x08, 0xbe, 0x16, 0xdb, 0x45, 0x08, 0x0e, 0x02, 0x02, 0xbe, 0x63, 0xdd, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xbe, 0x95, 0xdd, 0x45, 0x08, 0x0e - .byte 0x03, 0x02, 0xbe, 0xdd, 0xd9, 0xe7, 0xd9, 0xe7, 0x00, 0xc1, 0xbf, 0xcd, 0xbd, 0xc2, 0xbf, 0xc2, 0xbf, 0xc8, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xe2, 0xe9, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xe1 - .byte 0xd5, 0xe0, 0xfe, 0xdb, 0xd9, 0xe7, 0xe4, 0xdd, 0xd9, 0xe0, 0xe8, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff, 0xbe, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae - .byte 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xff + .byte 0x03, 0x02 + + .string "Dieses GESCHEHEN kann nur einmal\ngespielt werden.$" + .string "Deine BASIS-TASCHE ist voll.$" gUnknown_Debug_845DDB2:: .byte 0x01, 0xb2, 0xdd, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x45, 0x08, 0x06, 0xe3, 0x45, 0x08, 0x07, 0xd6 -- cgit v1.2.3 From 411687e2b69d4e2e361e1605564b6c0f8a01ef72 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 17:04:31 -0400 Subject: Decompile a debug script related to the Eon Ticket --- data/debug_menu_3.s | 65 ++++++++++++++++++++++----- data/scripts/maps/LilycoveCity_Harbor.inc | 2 +- data/scripts/maps/SouthernIsland_Interior.inc | 4 +- include/constants/flags.h | 2 +- include/macros/event.inc | 1 - 5 files changed, 59 insertions(+), 15 deletions(-) diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 23cd67053..c384465e7 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -13,6 +13,7 @@ #include "constants/vars.h" .include "include/macros.inc" .include "constants/constants.inc" + .include "include/macros/event.inc" .section .rodata @@ -26,17 +27,59 @@ _0845DAFF: me_end _0845DB16: - .string "Lauf und besuche deinen Vater in der\nARENA von BLÜTENBURG CITY.$" + .string "Lauf und besuche deinen Vater in der\n" + .string "ARENA von BLÜTENBURG CITY.$" _845DB56: - .byte 0xb8, 0x56, 0xdb, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21 - .byte 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0xb4 - .byte 0xdb, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xbe, 0xdb, 0x45, 0x08, 0x66, 0x6d, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0xb5, 0xdb, 0x45, 0x08, 0x1a, 0x00, 0x80, 0x13 - .byte 0x01, 0x1a, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0x53, 0x08, 0xbd, 0x00, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x0d, 0xbd, 0x94, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x02 - - .string "VATER: {PLAYER}! Schön, dich zu sehen!\nHier ist ein Brief für dich, {PLAYER}.$" - .string "VATER: Ich bin mir nicht sicher, es\nkönnte ein TICKET für eine Fähre sein.\pDu solltest nach SEEGRASULB CITY gehen\nund dich dort genauer erkundigen.$" - .string "VATER: {PLAYER}, die BASIS-TASCHE\ndeines BEUTELS ist voll.\pLagere einige deiner Basis-Items in\ndeinem PC und komm dann wieder.$" + setvaddress _845DB56 + checkitem ITEM_EON_TICKET, 0x1 + compare_var_to_value RESULT, 0x1 + vgoto_if 0x1, _0845DBB4 + checkpcitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DBB4 + checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS + vgoto_if 0x1, _0845DBB4 + lock + faceplayer + vmessage _0845DBBE + waitmessage + waitbuttonpress + checkitemspace ITEM_EON_TICKET, 0x1 + compare RESULT, 0x0 + vgoto_if 0x1, _0845DBB5 + setorcopyvar VAR_SPECIAL_0, ITEM_EON_TICKET + setorcopyvar VAR_SPECIAL_1, 0x1 + callstd 0x0 + setflag FLAG_SYS_HAS_EON_TICKET + vmessage _0845DC00 + waitmessage + waitbuttonpress + release +_0845DBB4: + killscript +_0845DBB5: + vmessage _0845DC94 + waitmessage + waitbuttonpress + release + end + +_0845DBBE: + .string "VATER: {PLAYER}! Schön, dich zu sehen!\n" + .string "Hier ist ein Brief für dich, {PLAYER}.$" + +_0845DC00: + .string "VATER: Ich bin mir nicht sicher, es\n" + .string "könnte ein TICKET für eine Fähre sein.\p" + .string "Du solltest nach SEEGRASULB CITY gehen\n" + .string "und dich dort genauer erkundigen.$" + +_0845DC94: + .string "VATER: {PLAYER}, die BASIS-TASCHE\n" + .string "deines BEUTELS ist voll.\p" + .string "Lagere einige deiner Basis-Items in\n" + .string "deinem PC und komm dann wieder.$" _0845DD0D: .byte 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45 @@ -44,7 +87,8 @@ _0845DD0D: .byte 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x5b, 0xdd, 0x45, 0x08, 0xbe, 0x16, 0xdb, 0x45, 0x08, 0x0e, 0x02, 0x02, 0xbe, 0x63, 0xdd, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xbe, 0x95, 0xdd, 0x45, 0x08, 0x0e .byte 0x03, 0x02 - .string "Dieses GESCHEHEN kann nur einmal\ngespielt werden.$" + .string "Dieses GESCHEHEN kann nur einmal\n" + .string "gespielt werden.$" .string "Deine BASIS-TASCHE ist voll.$" gUnknown_Debug_845DDB2:: @@ -121,3 +165,4 @@ gUnknown_Debug_845E7BB:: .endif + diff --git a/data/scripts/maps/LilycoveCity_Harbor.inc b/data/scripts/maps/LilycoveCity_Harbor.inc index 5dc217585..d32107396 100644 --- a/data/scripts/maps/LilycoveCity_Harbor.inc +++ b/data/scripts/maps/LilycoveCity_Harbor.inc @@ -106,7 +106,7 @@ LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4 LilycoveCity_Harbor_EventScript_1599EE:: @ 81599EE goto_if_unset FLAG_SYS_GAME_CLEAR, LilycoveCity_Harbor_EventScript_1598BA - goto_if_set FLAG_ECOUNTERED_LATIAS_OR_LATIOS, LilycoveCity_Harbor_EventScript_1598BA + goto_if_set FLAG_ENCOUNTERED_LATIAS_OR_LATIOS, LilycoveCity_Harbor_EventScript_1598BA goto_if_unset FLAG_SYS_HAS_EON_TICKET, LilycoveCity_Harbor_EventScript_1598BA msgbox LilycoveCity_Harbor_Text_1C50F2, 4 closemessage diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc index 5878a43d5..1a537cfb0 100644 --- a/data/scripts/maps/SouthernIsland_Interior.inc +++ b/data/scripts/maps/SouthernIsland_Interior.inc @@ -43,9 +43,9 @@ SouthernIsland_Interior_EventScript_160B9B:: @ 8160B9B end SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7 - goto_if_set FLAG_ECOUNTERED_LATIAS_OR_LATIOS, SouthernIsland_Interior_EventScript_160C08 + goto_if_set FLAG_ENCOUNTERED_LATIAS_OR_LATIOS, SouthernIsland_Interior_EventScript_160C08 goto_if_unset FLAG_SYS_HAS_EON_TICKET, SouthernIsland_Interior_EventScript_160C08 - setflag FLAG_ECOUNTERED_LATIAS_OR_LATIOS + setflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS special SpawnCameraDummy applymovement 127, SouthernIsland_Interior_Movement_160C12 waitmovement 0 diff --git a/include/constants/flags.h b/include/constants/flags.h index a8067f6ca..562741b93 100644 --- a/include/constants/flags.h +++ b/include/constants/flags.h @@ -158,7 +158,7 @@ #define FLAG_RECEIVED_GREEN_SCARF 0xCB #define FLAG_RECEIVED_YELLOW_SCARF 0xCC -#define FLAG_ECOUNTERED_LATIAS_OR_LATIOS 0xCE +#define FLAG_ENCOUNTERED_LATIAS_OR_LATIOS 0xCE #define FLAG_RECEIVED_BASEMENT_KEY 0xD0 #define FLAG_RECEIVED_TM24 0xD1 diff --git a/include/macros/event.inc b/include/macros/event.inc index fcbd3a055..a27e1da76 100644 --- a/include/macros/event.inc +++ b/include/macros/event.inc @@ -1236,7 +1236,6 @@ .macro setvaddress long, word .byte 0xb8 .4byte \long - .2byte \word .endm .macro vgoto pointer -- cgit v1.2.3 From c39884477408456e96d913aaec8a220b9152076c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 17:10:06 -0400 Subject: Decompile another script related to eon ticket --- data/debug_menu_3.s | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index c384465e7..d53208ea1 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -82,13 +82,37 @@ _0845DC94: .string "deinem PC und komm dann wieder.$" _0845DD0D: - .byte 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45 - .byte 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21 - .byte 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x5b, 0xdd, 0x45, 0x08, 0xbe, 0x16, 0xdb, 0x45, 0x08, 0x0e, 0x02, 0x02, 0xbe, 0x63, 0xdd, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xbe, 0x95, 0xdd, 0x45, 0x08, 0x0e - .byte 0x03, 0x02 + setvaddress _0845DD0D + checkitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DD53 + checkpcitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DD53 + checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS + vgoto_if 0x1, _0845DD53 + checkitemspace ITEM_EON_TICKET, 0x1 + compare RESULT, 0x0 + vgoto_if 0x1, _0845DD5B + vloadptr _0845DB16 + setmysteryeventstatus 0x2 + end + +_0845DD53: + vloadptr _0845DD63 + setmysteryeventstatus 0x3 + end +_0845DD5B: + vloadptr _0845DD95 + setmysteryeventstatus 0x3 + end + +_0845DD63: .string "Dieses GESCHEHEN kann nur einmal\n" .string "gespielt werden.$" + +_0845DD95: .string "Deine BASIS-TASCHE ist voll.$" gUnknown_Debug_845DDB2:: -- cgit v1.2.3 From beddf583c17c0fb82791c57d0fdd1a4264aa45b2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 17:14:40 -0400 Subject: hooray, more scripts with unparsed pointers --- data/debug_menu_3.s | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index d53208ea1..c40a0fcf4 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -116,8 +116,11 @@ _0845DD95: .string "Deine BASIS-TASCHE ist voll.$" gUnknown_Debug_845DDB2:: - .byte 0x01, 0xb2, 0xdd, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x45, 0x08, 0x06, 0xe3, 0x45, 0x08, 0x07, 0xd6 - .byte 0xdd, 0x45, 0x08, 0x02 + me_checkcompat gUnknown_Debug_845DDB2, 4, 4, 4, 0x80 + me_checksum 0xf, _0845DDD0, gUnknown_Debug_845E306 +_0845DDD0: + me_setenigmaberry gUnknown_Debug_845DDD6 + me_end gUnknown_Debug_845DDD6:: .space 0x530 -- cgit v1.2.3 From b5badf3e2d1e60052a14c129758d48617b856c1b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 17:45:21 -0400 Subject: Another set of scripts --- data/debug_menu_3.s | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index c40a0fcf4..4572b8851 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -117,7 +117,7 @@ _0845DD95: gUnknown_Debug_845DDB2:: me_checkcompat gUnknown_Debug_845DDB2, 4, 4, 4, 0x80 - me_checksum 0xf, _0845DDD0, gUnknown_Debug_845E306 + me_checksum 0x0, _0845DDD0, gUnknown_Debug_845E306 _0845DDD0: me_setenigmaberry gUnknown_Debug_845DDD6 me_end @@ -126,13 +126,33 @@ gUnknown_Debug_845DDD6:: .space 0x530 gUnknown_Debug_845E306:: - .byte 0x01, 0x06, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x05, 0x29, 0xe3, 0x45, 0x08, 0x03, 0x02, 0x4f, 0xe3, 0x45, 0x08, 0x03, 0x03, 0x87, 0xe3 - .byte 0x45, 0x08, 0x02, 0xb8, 0x29, 0xe3, 0x45, 0x08, 0x43, 0x21, 0x0d, 0x80, 0x06, 0x00, 0xbb, 0x01, 0x4c, 0xe3, 0x45, 0x08, 0x79, 0x45, 0x01, 0x0f, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x0e, 0x03, 0x02, 0xbf, 0xdd, 0xe2, 0x00, 0xca, 0xc9, 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd5 - .byte 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0xfe, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0xad - .byte 0xff, 0xbe, 0xd5, 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0x00, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xe7 - .byte 0xe8, 0xf4, 0xe2, 0xd8, 0xdd, 0xdb, 0xad, 0xfe, 0xbf, 0xe7, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xeb, 0xd9, 0xdd, 0xe8, 0xd9, 0xe6, 0xd9, 0xe7, 0x00, 0xca, 0xc9 - .byte 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0xfa, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff + me_checkcompat gUnknown_Debug_845E306, 0x4, 0x4, 0x4, 0x80 + me_runscript _0845E329 + me_setmsg 0x2, _0845E34F + me_setmsg 0x3, _0845E387 + me_end + +_0845E329: + setvaddress _0845E329 + getpartysize + compare RESULT, 0x6 + vgoto_if 0x1, _0845E34C + givemon SPECIES_LUVDISC, 15, ITEM_BERRY_JUICE, 0x0, 0x0, 0x0 + setmysteryeventstatus 0x2 + end + +_0845E34C: + setmysteryeventstatus 0x3 + end + +_0845E34F: + .string "Ein POKéMON wurde in das Team des\n" + .string "Spielers aufgenommen.$" + +_0845E387: + .string "Das Team des Spielers ist vollständig.\n" + .string "Es kann kein weiteres POKéMON\l" + .string "aufgenommen werden.$" gUnknown_Debug_845E3E0:: .byte 0x01, 0xe0, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0x45, 0x08, 0x02, 0xe4, 0x45, 0x08, 0x08, 0x00 -- cgit v1.2.3 From b64aa1099ca7d97d6db6d0828e2114392790338f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 18:16:17 -0400 Subject: Finish decompiling debug_menu_3 scripts --- data/debug_menu_3.s | 122 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 94 insertions(+), 28 deletions(-) diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 4572b8851..5cce24ab2 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -33,7 +33,7 @@ _0845DB16: _845DB56: setvaddress _845DB56 checkitem ITEM_EON_TICKET, 0x1 - compare_var_to_value RESULT, 0x1 + compare RESULT, 0x1 vgoto_if 0x1, _0845DBB4 checkpcitem ITEM_EON_TICKET, 0x1 compare RESULT, 0x1 @@ -155,19 +155,32 @@ _0845E387: .string "aufgenommen werden.$" gUnknown_Debug_845E3E0:: - .byte 0x01, 0xe0, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0x45, 0x08, 0x02, 0xe4, 0x45, 0x08, 0x08, 0x00 - .byte 0x01, 0x02 + me_checkcompat 0x845e3e0, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E3FE, gUnknown_Debug_845E402 +_0845E3FE: + me_giveribbon 0x0, 0x1 + me_end gUnknown_Debug_845E402:: - .byte 0x01, 0x02, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0xe4, 0x45, 0x08, 0x22, 0xe4, 0x45, 0x08, 0x09, 0x02 + me_checkcompat 0x845e402, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E420, gUnknown_Debug_845E422 +_0845E420: + me_givenationaldex + me_end gUnknown_Debug_845E422:: - .byte 0x01, 0x22, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe4, 0x45, 0x08, 0x43, 0xe4, 0x45, 0x08, 0x0a, 0x01 - .byte 0x02 + me_checkcompat 0x845e422, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E440, gUnknown_Debug_845E443 +_0845E440: + me_addrareword 0x1 + me_end gUnknown_Debug_845E443:: - .byte 0x01, 0x43, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0xe4, 0x45, 0x08, 0xef, 0xe4, 0x45, 0x08, 0x0c, 0x67 - .byte 0xe4, 0x45, 0x08, 0x02 + me_checkcompat 0x845e443, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E461, gUnknown_Debug_845E4EF +_0845E461: + me_givepokemon gUnknown_Debug_845E467 + me_end gUnknown_Debug_845E467:: .space 100 @@ -176,40 +189,93 @@ gUnknown_Debug_845E4CB:: .space 36 gUnknown_Debug_845E4EF:: - .byte 0x01, 0xef, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x06, 0xe5, 0x45, 0x08, 0x02 + me_checkcompat gUnknown_Debug_845E4EF, 0x4, 0x4, 0x4, 0x80 + me_addtrainer gUnknown_Debug_845E506 + me_end gUnknown_Debug_845E506:: .space 256 gUnknown_Debug_845E606:: - .byte 0x01, 0x06, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x02 + me_checkcompat gUnknown_Debug_845E606, 0x4, 0x4, 0x4, 0x80 + me_enableresetrtc + me_end gUnknown_Debug_845E619:: - .byte 0x01, 0x19, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x37, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x06, 0x08 - .byte 0x01, 0x01, 0x83, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x03, 0xff, 0x4c, 0xe6, 0x45, 0x08, 0x04, 0x02, 0x02, 0xbc, 0xd9, 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9 - .byte 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0x00, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0xfe, 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc - .byte 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x83, 0xe6, 0x45, 0x08, 0x47, 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x4a - .byte 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xc0, 0xe6, 0x45, 0x08, 0x66, 0x6d, 0x1a, 0x00, 0x80, 0xa9, 0x00, 0x1a, 0x01, 0x80 - .byte 0x01, 0x00, 0x09, 0x00, 0x6c, 0x0d, 0x0c, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc2, 0xdd, 0xb8, 0x00, 0xfd, 0x01, 0xab, 0xfb, 0xc3, 0xd7, 0xdc, 0x00, 0xdc, 0xd5, 0xd6, 0xd9, 0x00, 0xdb - .byte 0xd9, 0xe6, 0xd5, 0xd8, 0xd9, 0x00, 0xd8, 0xdd, 0xd9, 0xe7, 0xd9, 0x00, 0xe7, 0xd9, 0xe0, 0xe8, 0xd9, 0xe2, 0xd9, 0x00, 0xbc, 0xbf, 0xbf, 0xcc, 0xbf, 0xfe, 0xd9, 0xe6, 0xdc, 0xd5, 0xe0, 0xe8 - .byte 0xd9, 0xe2, 0xad, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xe7, 0xd7, 0xdc, 0xd9, 0xe2, 0xdf, 0xd9, 0x00, 0xe7, 0xdd, 0xd9, 0x00, 0xd8, 0xdd, 0xe6, 0xab, 0xff + me_checkcompat gUnknown_Debug_845E619, 0x4, 0x4, 0x4, 0x80 + me_checksum 0x0, _0845E637, gUnknown_Debug_845E712 +_0845E637: + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _0845E683, gUnknown_Debug_845E712 + me_setmsg 0xff, _0845E64C + me_setstatus 0x2 + me_end + +_0845E64C: + .string "Besuche deinen Vater in der ARENA\n" + .string "von BLÜTENBURG CITY.$" + +_0845E683: + setvaddress _0845E683 + checkitem ITEM_GANLON_BERRY, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845E6BF + checkpcitem ITEM_GANLON_BERRY, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845E6BF + lock + faceplayer + vmessage _0845E6C0 + waitmessage + waitbuttonpress + setorcopyvar VAR_SPECIAL_0, ITEM_GANLON_BERRY + setorcopyvar VAR_SPECIAL_1, 0x1 + callstd 0x0 + release + killscript +_0845E6BF: + gotoram + +_0845E6C0: + .string "VATER: Hi, {PLAYER}!\p" + .string "Ich habe gerade diese seltene BEERE\n" + .string "erhalten. Ich schenke sie dir!$" gUnknown_Debug_845E712:: - .byte 0x01, 0x12, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe7, 0x45, 0x08, 0x97, 0xe7, 0x45, 0x08, 0x05, 0x36 - .byte 0xe7, 0x45, 0x08, 0x02, 0xb8, 0x36, 0xe7, 0x45, 0x08, 0x81, 0x00, 0x78, 0x00, 0x4b, 0x78, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x55, 0xe7, 0x45, 0x08, 0xbe, 0x5d, 0xe7, 0x45, 0x08 - .byte 0x0e, 0x02, 0x02, 0xbe, 0x71, 0xe7, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xfd, 0x02, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xf6, 0xd6, 0xd9, 0xe6, 0xdb, 0xd9, 0xd6, 0xd9, 0xe2, 0xad, 0xff, 0xbf - .byte 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xca, 0xe0, 0xd5, 0xe8, 0xee, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xfd, 0x02, 0xfe, 0xea, 0xe3, 0xe6, 0xdc, 0xd5, 0xe2, 0xd8, 0xd9 - .byte 0xe2, 0xad, 0xad, 0xad, 0xff + me_checkcompat gUnknown_Debug_845E712, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E730, gUnknown_Debug_845E797 +_0845E730: + me_runscript _0845E736 + me_end -gUnknown_Debug_845E797:: - .byte 0x01, 0x97, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe7, 0x45, 0x08, 0xbb, 0xe7, 0x45, 0x08 +_0845E736: + setvaddress _0845E736 + bufferdecorationname 0x0, DECOR_REGISTEEL_DOLL + givedecoration DECOR_REGISTEEL_DOLL + compare RESULT, 0x0 + vgoto_if 0x1, _0845E755 + vloadptr _0845E75D + setmysteryeventstatus 0x2 + end +_0845E755: + vloadptr _0845E771 + setmysteryeventstatus 0x3 + end + +_0845E75D: + .string "{STR_VAR_1} wurde übergeben.$" +_0845E771: + .string "Es ist kein Platz für {STR_VAR_1}\n" + .string "vorhanden...$" + +gUnknown_Debug_845E797:: + me_checkcompat gUnknown_Debug_845E797, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, gUnknown_Debug_845E7B5, gUnknown_Debug_845E7BB gUnknown_Debug_845E7B5:: - .byte 0x0b, 0x01, 0x03, 0x0d, 0x00, 0x02 + me_setrecordmixinggift 0x1, 0x3, ITEM_POTION + me_end gUnknown_Debug_845E7BB:: .byte 0x00 .endif - - -- cgit v1.2.3 From ba15929341946fe7eebe0464ff05b016f1a57565 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 21:01:14 -0400 Subject: Replace hardcoded pointers and add a .size directive to sized objects --- data/debug_menu_3.s | 52 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 5cce24ab2..65c4e4514 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -19,9 +19,9 @@ gUnknown_Debug_845DAE1:: me_checkcompat gUnknown_Debug_845DAE1, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845DAFF, gUnknown_Debug_845DDB2 + me_crc 0x0, _0845DAFF, _0845DAFFEnd _0845DAFF: - me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _845DB56, _0845DD0D + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _845DB56, _845DB56End me_setrecordmixinggift 0x1, 0x5, ITEM_EON_TICKET me_runscript _0845DD0D me_end @@ -80,6 +80,8 @@ _0845DC94: .string "deines BEUTELS ist voll.\p" .string "Lagere einige deiner Basis-Items in\n" .string "deinem PC und komm dann wieder.$" +_845DB56End: + .size _845DB56, _845DB56End - _845DB56 _0845DD0D: setvaddress _0845DD0D @@ -114,16 +116,20 @@ _0845DD63: _0845DD95: .string "Deine BASIS-TASCHE ist voll.$" +_0845DAFFEnd: + .size _0845DAFF, _0845DAFFEnd - _0845DAFF gUnknown_Debug_845DDB2:: me_checkcompat gUnknown_Debug_845DDB2, 4, 4, 4, 0x80 - me_checksum 0x0, _0845DDD0, gUnknown_Debug_845E306 + me_checksum 0x0, _0845DDD0, _0845DDD0End _0845DDD0: me_setenigmaberry gUnknown_Debug_845DDD6 me_end gUnknown_Debug_845DDD6:: .space 0x530 +_0845DDD0End: + .size _0845DDD0, _0845DDD0End - _0845DDD0 gUnknown_Debug_845E306:: me_checkcompat gUnknown_Debug_845E306, 0x4, 0x4, 0x4, 0x80 @@ -155,29 +161,35 @@ _0845E387: .string "aufgenommen werden.$" gUnknown_Debug_845E3E0:: - me_checkcompat 0x845e3e0, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E3FE, gUnknown_Debug_845E402 + me_checkcompat gUnknown_Debug_845E3E0, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E3FE, _0845E3FEEnd _0845E3FE: me_giveribbon 0x0, 0x1 me_end +_0845E3FEEnd: + .size _0845E3FE, _0845E3FEEnd - _0845E3FE gUnknown_Debug_845E402:: - me_checkcompat 0x845e402, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E420, gUnknown_Debug_845E422 + me_checkcompat gUnknown_Debug_845E402, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E420, _0845E420End _0845E420: me_givenationaldex me_end +_0845E420End: + .size _0845E420, _0845E420End - _0845E420 gUnknown_Debug_845E422:: - me_checkcompat 0x845e422, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E440, gUnknown_Debug_845E443 + me_checkcompat gUnknown_Debug_845E422, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E440, _0845E440End _0845E440: me_addrareword 0x1 me_end +_0845E440End: + .size _0845E440, _0845E440End - _0845E440 gUnknown_Debug_845E443:: - me_checkcompat 0x845e443, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E461, gUnknown_Debug_845E4EF + me_checkcompat gUnknown_Debug_845E443, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E461, _0845E461End _0845E461: me_givepokemon gUnknown_Debug_845E467 me_end @@ -187,6 +199,8 @@ gUnknown_Debug_845E467:: gUnknown_Debug_845E4CB:: .space 36 +_0845E461End: + .size _0845E461, _0845E461End - _0845E461 gUnknown_Debug_845E4EF:: me_checkcompat gUnknown_Debug_845E4EF, 0x4, 0x4, 0x4, 0x80 @@ -203,9 +217,9 @@ gUnknown_Debug_845E606:: gUnknown_Debug_845E619:: me_checkcompat gUnknown_Debug_845E619, 0x4, 0x4, 0x4, 0x80 - me_checksum 0x0, _0845E637, gUnknown_Debug_845E712 + me_checksum 0x0, _0845E637, _0845E637End _0845E637: - me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _0845E683, gUnknown_Debug_845E712 + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _0845E683, _0845E683End me_setmsg 0xff, _0845E64C me_setstatus 0x2 me_end @@ -239,13 +253,19 @@ _0845E6C0: .string "VATER: Hi, {PLAYER}!\p" .string "Ich habe gerade diese seltene BEERE\n" .string "erhalten. Ich schenke sie dir!$" +_0845E637End: + .size _0845E637, _0845E637End - _0845E637 +_0845E683End: + .size _0845E683, _0845E683End - _0845E683 gUnknown_Debug_845E712:: me_checkcompat gUnknown_Debug_845E712, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E730, gUnknown_Debug_845E797 + me_crc 0x0, _0845E730, _0845E730End _0845E730: me_runscript _0845E736 me_end +_0845E730End: + .size _0845E730, _0845E730End - _0845E730 _0845E736: setvaddress _0845E736 @@ -270,10 +290,12 @@ _0845E771: gUnknown_Debug_845E797:: me_checkcompat gUnknown_Debug_845E797, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, gUnknown_Debug_845E7B5, gUnknown_Debug_845E7BB + me_crc 0x0, gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End gUnknown_Debug_845E7B5:: me_setrecordmixinggift 0x1, 0x3, ITEM_POTION me_end +gUnknown_Debug_845E7B5End: + .size gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End - gUnknown_Debug_845E7B5 gUnknown_Debug_845E7BB:: .byte 0x00 -- cgit v1.2.3 From 4d3098e89b5aebf080547a99e68640138dc74599 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 21:30:05 -0400 Subject: Start decompiling unk_debug_menu_3 code --- asm/unk_debug_menu_3.s | 25 ------------------------- data/debug_menu_3.s | 1 + include/mystery_event_script.h | 4 ++++ include/util.h | 2 +- ld_script.txt | 2 ++ src/debug/unk_debug_menu_3.c | 10 ++++++++++ src/mystery_event_script.c | 6 ++++-- src/util.c | 2 +- 8 files changed, 23 insertions(+), 29 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index aa156a99b..968c53b11 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,31 +5,6 @@ .text - thumb_func_start debug_sub_813C404 -debug_sub_813C404: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._1 @ gUnknown_Debug_845DDB2 - ldr r4, ._1 + 4 @ gUnknown_Debug_845DAE1 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._2: - .align 2, 0 -._1: - .word gUnknown_Debug_845DDB2 - .word gUnknown_Debug_845DAE1 - - thumb_func_end debug_sub_813C404 - thumb_func_start debug_sub_813C430 debug_sub_813C430: push {r4, r5, r6, lr} diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 65c4e4514..3652b1dc6 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -118,6 +118,7 @@ _0845DD95: .string "Deine BASIS-TASCHE ist voll.$" _0845DAFFEnd: .size _0845DAFF, _0845DAFFEnd - _0845DAFF +gUnknown_Debug_845DAE1End:: gUnknown_Debug_845DDB2:: me_checkcompat gUnknown_Debug_845DDB2, 4, 4, 4, 0x80 diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index ab23a8d00..a92bb6667 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -4,5 +4,9 @@ u32 RunMysteryEventScript(u8 *); void SetMysteryEventScriptStatus(u32 val); u16 GetRecordMixingGift(void); +#if DEBUG +bool8 unref_sub_812620C(u8 *a1, const u8 * _a2); +bool8 unref_sub_81261B4(u8 *a1, const u8 * _a2); +#endif // DEBUG #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/util.h b/include/util.h index 676c3bd9b..02c503f75 100644 --- a/include/util.h +++ b/include/util.h @@ -9,7 +9,7 @@ extern const u32 gBitTable[]; u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); -u16 CalcCRC16(u8 *data, int length); +u16 CalcCRC16(const u8 *data, int length); void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha); void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output); diff --git a/ld_script.txt b/ld_script.txt index 74cca392b..2cfd8bf6f 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -363,6 +363,7 @@ SECTIONS { src/unused_8124F94.o(.text); src/save.o(.text); src/mystery_event_script.o(.text); + src/debug/unk_debug_menu_3.o(.text); asm/unk_debug_menu_3.o(.text); src/field_effect_helpers.o(.text); src/contest_ai.o(.text); @@ -648,6 +649,7 @@ SECTIONS { src/choose_party.o(.rodata); src/cable_car.o(.rodata); src/save.o(.rodata); + src/debug/unk_debug_menu_3.o(.rodata); data/unk_debug_menu_3.o(.rodata); src/field_effect_helpers.o(.rodata); src/contest_ai.o(.rodata); diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 5f2ede62a..8603cb1e7 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -2,7 +2,17 @@ #include "global.h" #include "debug.h" +#include "mystery_event_script.h" +extern const u8 gUnknown_Debug_845DAE1[]; +extern const u8 gUnknown_Debug_845DAE1End[]; +size_t debug_sub_813C404(void * dest) +{ + size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; + memcpy(dest, gUnknown_Debug_845DAE1, size); + unref_sub_812620C(dest, gUnknown_Debug_845DAE1); + return size; +} #endif // DEBUG diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 6fcad66ac..83aa90102 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -114,8 +114,9 @@ static void SetWord(u8 *ptr, u32 val) ptr[3] = val >> 24; } -bool8 unref_sub_81261B4(u8 *a1, int a2) +bool8 unref_sub_81261B4(u8 *a1, const u8 * _a2) { + int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12)) { int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; @@ -128,8 +129,9 @@ bool8 unref_sub_81261B4(u8 *a1, int a2) return FALSE; } -bool8 unref_sub_812620C(u8 *a1, int a2) +bool8 unref_sub_812620C(u8 *a1, const u8 * _a2) { + int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12)) { int v4 = GetWord(a1 + 0x16) - a2 + (int)a1; diff --git a/src/util.c b/src/util.c index 582b9f806..e14665a03 100644 --- a/src/util.c +++ b/src/util.c @@ -490,7 +490,7 @@ int CountTrailingZeroBits(u32 value) return 0; } -u16 CalcCRC16(u8 *data, int length) +u16 CalcCRC16(const u8 *data, int length) { u16 i, j; u16 crc = 0x1121; -- cgit v1.2.3 From dade23a2663d064304dd49157e6e1f87642c1d05 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 21:40:09 -0400 Subject: through debug_sub_813C500 --- asm/unk_debug_menu_3.s | 145 ------------------------------------------- data/debug_menu_3.s | 6 ++ src/debug/unk_debug_menu_3.c | 65 +++++++++++++++++++ 3 files changed, 71 insertions(+), 145 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index 968c53b11..fcb7d4f07 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,151 +5,6 @@ .text - thumb_func_start debug_sub_813C430 -debug_sub_813C430: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._3 @ gUnknown_Debug_845E402 - ldr r4, ._3 + 4 @ gUnknown_Debug_845E3E0 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._4: - .align 2, 0 -._3: - .word gUnknown_Debug_845E402 - .word gUnknown_Debug_845E3E0 - - thumb_func_end debug_sub_813C430 - - thumb_func_start debug_sub_813C45C -debug_sub_813C45C: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._5 @ gUnknown_Debug_845E443 - ldr r4, ._5 + 4 @ gUnknown_Debug_845E422 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._6: - .align 2, 0 -._5: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E422 - - thumb_func_end debug_sub_813C45C - - thumb_func_start debug_sub_813C488 -debug_sub_813C488: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._7 @ gUnknown_Debug_845E422 - ldr r4, ._7 + 4 @ gUnknown_Debug_845E402 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._8: - .align 2, 0 -._7: - .word gUnknown_Debug_845E422 - .word gUnknown_Debug_845E402 - - thumb_func_end debug_sub_813C488 - - thumb_func_start debug_sub_813C4B4 -debug_sub_813C4B4: - push {r4, lr} - ldr r4, ._9 @ gUnknown_Debug_845E619 - ldr r1, ._9 + 4 @ gUnknown_Debug_845E606 - sub r4, r4, r1 - add r2, r4, #0 - bl memcpy - add r0, r4, #0 - pop {r4} - pop {r1} - bx r1 -._10: - .align 2, 0 -._9: - .word gUnknown_Debug_845E619 - .word gUnknown_Debug_845E606 - - thumb_func_end debug_sub_813C4B4 - - thumb_func_start debug_sub_813C4D4 -debug_sub_813C4D4: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._11 @ gUnknown_Debug_845E712 - ldr r4, ._11 + 4 @ gUnknown_Debug_845E619 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_81261B4 - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._12: - .align 2, 0 -._11: - .word gUnknown_Debug_845E712 - .word gUnknown_Debug_845E619 - - thumb_func_end debug_sub_813C4D4 - - thumb_func_start debug_sub_813C500 -debug_sub_813C500: - push {r4, r5, r6, lr} - add r6, r0, #0 - ldr r5, ._13 @ gUnknown_Debug_845E797 - ldr r4, ._13 + 4 @ gUnknown_Debug_845E712 - sub r5, r5, r4 - add r1, r4, #0 - add r2, r5, #0 - bl memcpy - add r0, r6, #0 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r5, #0 - pop {r4, r5, r6} - pop {r1} - bx r1 -._14: - .align 2, 0 -._13: - .word gUnknown_Debug_845E797 - .word gUnknown_Debug_845E712 - - thumb_func_end debug_sub_813C500 - thumb_func_start debug_sub_813C52C debug_sub_813C52C: push {r4, r5, r6, lr} diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 3652b1dc6..993aba148 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -169,6 +169,7 @@ _0845E3FE: me_end _0845E3FEEnd: .size _0845E3FE, _0845E3FEEnd - _0845E3FE +gUnknown_Debug_845E3E0End:: gUnknown_Debug_845E402:: me_checkcompat gUnknown_Debug_845E402, 0x4, 0x4, 0x4, 0x80 @@ -178,6 +179,7 @@ _0845E420: me_end _0845E420End: .size _0845E420, _0845E420End - _0845E420 +gUnknown_Debug_845E402End:: gUnknown_Debug_845E422:: me_checkcompat gUnknown_Debug_845E422, 0x4, 0x4, 0x4, 0x80 @@ -187,6 +189,7 @@ _0845E440: me_end _0845E440End: .size _0845E440, _0845E440End - _0845E440 +gUnknown_Debug_845E422End:: gUnknown_Debug_845E443:: me_checkcompat gUnknown_Debug_845E443, 0x4, 0x4, 0x4, 0x80 @@ -215,6 +218,7 @@ gUnknown_Debug_845E606:: me_checkcompat gUnknown_Debug_845E606, 0x4, 0x4, 0x4, 0x80 me_enableresetrtc me_end +gUnknown_Debug_845E606End:: gUnknown_Debug_845E619:: me_checkcompat gUnknown_Debug_845E619, 0x4, 0x4, 0x4, 0x80 @@ -258,6 +262,7 @@ _0845E637End: .size _0845E637, _0845E637End - _0845E637 _0845E683End: .size _0845E683, _0845E683End - _0845E683 +gUnknown_Debug_845E619End:: gUnknown_Debug_845E712:: me_checkcompat gUnknown_Debug_845E712, 0x4, 0x4, 0x4, 0x80 @@ -288,6 +293,7 @@ _0845E75D: _0845E771: .string "Es ist kein Platz für {STR_VAR_1}\n" .string "vorhanden...$" +gUnknown_Debug_845E712End:: gUnknown_Debug_845E797:: me_checkcompat gUnknown_Debug_845E797, 0x4, 0x4, 0x4, 0x80 diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 8603cb1e7..e42506971 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -15,4 +15,69 @@ size_t debug_sub_813C404(void * dest) return size; } +extern const u8 gUnknown_Debug_845E3E0[]; +extern const u8 gUnknown_Debug_845E3E0End[]; + +size_t debug_sub_813C430(void * dest) +{ + size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; + memcpy(dest, gUnknown_Debug_845E3E0, size); + unref_sub_812620C(dest, gUnknown_Debug_845E3E0); + return size; +} + +extern const u8 gUnknown_Debug_845E422[]; +extern const u8 gUnknown_Debug_845E422End[]; + +size_t debug_sub_813C45C(void * dest) +{ + size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; + memcpy(dest, gUnknown_Debug_845E422, size); + unref_sub_812620C(dest, gUnknown_Debug_845E422); + return size; +} + +extern const u8 gUnknown_Debug_845E402[]; +extern const u8 gUnknown_Debug_845E402End[]; + +size_t debug_sub_813C488(void * dest) +{ + size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; + memcpy(dest, gUnknown_Debug_845E402, size); + unref_sub_812620C(dest, gUnknown_Debug_845E402); + return size; +} + +extern const u8 gUnknown_Debug_845E606[]; +extern const u8 gUnknown_Debug_845E606End[]; + +size_t debug_sub_813C4B4(void * dest) +{ + size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606; + memcpy(dest, gUnknown_Debug_845E606, size); + return size; +} + +extern const u8 gUnknown_Debug_845E619[]; +extern const u8 gUnknown_Debug_845E619End[]; + +size_t debug_sub_813C4D4(void * dest) +{ + size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; + memcpy(dest, gUnknown_Debug_845E619, size); + unref_sub_81261B4(dest, gUnknown_Debug_845E619); + return size; +} + +extern const u8 gUnknown_Debug_845E712[]; +extern const u8 gUnknown_Debug_845E712End[]; + +size_t debug_sub_813C500(void * dest) +{ + size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; + memcpy(dest, gUnknown_Debug_845E712, size); + unref_sub_812620C(dest, gUnknown_Debug_845E712); + return size; +} + #endif // DEBUG -- cgit v1.2.3 From 2b09707c406245214572abb9f4bc81ee408e5be5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 21:50:50 -0400 Subject: through debug_sub_813C5A4 --- asm/unk_debug_menu_3.s | 88 -------------------------------------------- data/debug_menu_3.s | 4 +- src/debug/unk_debug_menu_3.c | 38 +++++++++++++++++++ 3 files changed, 39 insertions(+), 91 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index fcb7d4f07..4463c680b 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,94 +5,6 @@ .text - thumb_func_start debug_sub_813C52C -debug_sub_813C52C: - push {r4, r5, r6, lr} - mov r6, r9 - mov r5, r8 - push {r5, r6} - mov r8, r0 - lsl r5, r1, #0x10 - lsr r0, r5, #0x10 - mov r9, r0 - ldr r6, ._15 @ gUnknown_Debug_845E7BB - ldr r4, ._15 + 4 @ gUnknown_Debug_845E797 - sub r6, r6, r4 - mov r0, r8 - add r1, r4, #0 - add r2, r6, #0 - bl memcpy - ldr r0, ._15 + 8 @ gUnknown_Debug_845E7B5 - sub r0, r0, r4 - add r0, r0, r8 - add r0, r0, #0x3 - mov r1, r9 - strb r1, [r0] - lsr r5, r5, #0x18 - strb r5, [r0, #0x1] - mov r0, r8 - add r1, r4, #0 - bl unref_sub_812620C - add r0, r6, #0 - pop {r3, r4} - mov r8, r3 - mov r9, r4 - pop {r4, r5, r6} - pop {r1} - bx r1 -._16: - .align 2, 0 -._15: - .word gUnknown_Debug_845E7BB - .word gUnknown_Debug_845E797 - .word gUnknown_Debug_845E7B5 - - thumb_func_end debug_sub_813C52C - - thumb_func_start debug_sub_813C580 -debug_sub_813C580: - push {lr} - mov r1, #0xd - bl debug_sub_813C52C - pop {r1} - bx r1 - - thumb_func_end debug_sub_813C580 - - thumb_func_start debug_sub_813C58C -debug_sub_813C58C: - push {lr} - mov r1, #0x4 - bl debug_sub_813C52C - pop {r1} - bx r1 - - thumb_func_end debug_sub_813C58C - - thumb_func_start debug_sub_813C598 -debug_sub_813C598: - push {lr} - mov r1, #0x85 - bl debug_sub_813C52C - pop {r1} - bx r1 - - thumb_func_end debug_sub_813C598 - - thumb_func_start debug_sub_813C5A4 -debug_sub_813C5A4: - push {lr} - ldr r1, ._17 @ 0x121 - bl debug_sub_813C52C - pop {r1} - bx r1 -._18: - .align 2, 0 -._17: - .word 0x121 - - thumb_func_end debug_sub_813C5A4 - thumb_func_start debug_sub_813C5B4 debug_sub_813C5B4: push {r4, r5, r6, r7, lr} diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 993aba148..e2021c97d 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -303,8 +303,6 @@ gUnknown_Debug_845E7B5:: me_end gUnknown_Debug_845E7B5End: .size gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End - gUnknown_Debug_845E7B5 - -gUnknown_Debug_845E7BB:: - .byte 0x00 +gUnknown_Debug_845E797End:: .endif diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index e42506971..4b40927b9 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -2,6 +2,7 @@ #include "global.h" #include "debug.h" +#include "constants/items.h" #include "mystery_event_script.h" extern const u8 gUnknown_Debug_845DAE1[]; @@ -80,4 +81,41 @@ size_t debug_sub_813C500(void * dest) return size; } +extern const u8 gUnknown_Debug_845E797[]; +extern const u8 gUnknown_Debug_845E797End[]; +extern const u8 gUnknown_Debug_845E7B5[]; + +size_t debug_sub_813C52C(void * dest, u16 itemId) +{ + u8 * ptr; + size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797; + memcpy(dest, gUnknown_Debug_845E797, size); + ptr = gUnknown_Debug_845E7B5 - gUnknown_Debug_845E797 + dest; + ptr += 3; + ptr[0] = itemId; + ptr[1] = itemId >> 8; + unref_sub_812620C(dest, gUnknown_Debug_845E797); + return size; +} + +size_t debug_sub_813C580(void * dest) +{ + return debug_sub_813C52C(dest, ITEM_POTION); +} + +size_t debug_sub_813C58C(void * dest) +{ + return debug_sub_813C52C(dest, ITEM_POKE_BALL); +} + +size_t debug_sub_813C598(void * dest) +{ + return debug_sub_813C52C(dest, ITEM_CHERI_BERRY); +} + +size_t debug_sub_813C5A4(void * dest) +{ + return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); +} + #endif // DEBUG -- cgit v1.2.3 From 9a529d12a955a605810154ea0eb242860db9304e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 22:18:52 -0400 Subject: debug_sub_813C5B4 --- asm/unk_debug_menu_3.s | 68 -------------------------------------------- data/debug_menu_3.s | 1 + include/berry.h | 2 ++ src/berry.c | 2 +- src/debug/unk_debug_menu_3.c | 58 ++++++++++++++++++++++++++++--------- 5 files changed, 48 insertions(+), 83 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index 4463c680b..d501950d7 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,74 +5,6 @@ .text - thumb_func_start debug_sub_813C5B4 -debug_sub_813C5B4: - push {r4, r5, r6, r7, lr} - add r4, r0, #0 - ldr r7, ._23 @ gSaveBlock1 - ldr r0, ._23 + 4 @ gUnknown_Debug_845DDD6 - ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2 - sub r0, r0, r1 - add r6, r0, r4 - ldr r0, ._23 + 12 @ gUnknown_Debug_845E306 - sub r5, r0, r1 - ldr r0, ._23 + 16 @ Str_842E23C - mov r1, #0x0 - mov r2, #0x0 - bl debug_sub_80C2C18 - mov r2, #0x0 - ldr r3, ._23 + 20 @ 0xfff - mov r1, #0x0 -._19: - add r0, r4, r2 - strb r1, [r0] - add r2, r2, #0x1 - cmp r2, r3 - ble ._19 @cond_branch - mov r2, #0x0 - cmp r2, r5 - bcs ._20 @cond_branch - ldr r3, ._23 + 8 @ gUnknown_Debug_845DDB2 -._21: - add r0, r4, r2 - add r1, r2, r3 - ldrb r1, [r1] - strb r1, [r0] - add r2, r2, #0x1 - cmp r2, r5 - bcc ._21 @cond_branch -._20: - mov r2, #0x0 - ldr r3, ._23 + 24 @ 0x52f -._22: - add r0, r6, r2 - add r1, r7, r2 - ldrb r1, [r1] - strb r1, [r0] - add r2, r2, #0x1 - cmp r2, r3 - bls ._22 @cond_branch - bl ClearEnigmaBerries - ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2 - add r0, r4, #0 - bl unref_sub_81261B4 - add r0, r5, #0 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 -._24: - .align 2, 0 -._23: - .word gSaveBlock1+0x3160 - .word gUnknown_Debug_845DDD6 - .word gUnknown_Debug_845DDB2 - .word gUnknown_Debug_845E306 - .word Str_842E23C - .word 0xfff - .word 0x52f - - thumb_func_end debug_sub_813C5B4 - thumb_func_start debug_sub_813C638 debug_sub_813C638: push {r4, r5, r6, lr} diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index e2021c97d..be2966756 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -131,6 +131,7 @@ gUnknown_Debug_845DDD6:: .space 0x530 _0845DDD0End: .size _0845DDD0, _0845DDD0End - _0845DDD0 +gUnknown_Debug_845DDB2End:: gUnknown_Debug_845E306:: me_checkcompat gUnknown_Debug_845E306, 0x4, 0x4, 0x4, 0x80 diff --git a/include/berry.h b/include/berry.h index a7ac5ba94..7c8f5e5fd 100644 --- a/include/berry.h +++ b/include/berry.h @@ -23,6 +23,8 @@ enum BERRY_STAGE_SPARKLING = 0xFF, }; +void ClearEnigmaBerries(void); +void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam); void SetEnigmaBerry(u8 *src); bool32 IsEnigmaBerryValid(void); const struct Berry *GetBerryInfo(u8 berry); diff --git a/src/berry.c b/src/berry.c index 9313c458b..16b5b2b22 100644 --- a/src/berry.c +++ b/src/berry.c @@ -1085,7 +1085,7 @@ extern u8 gUnknown_Debug_839B6CE[]; static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ"); static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう"); -void debug_sub_80C2C18(u8 *name, u8 holdEffect, u8 holdEffectParam) +void debug_sub_80C2C18(const u8 *name, u8 holdEffect, u8 holdEffectParam) { s32 i; diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 4b40927b9..7e63abbd3 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -1,14 +1,15 @@ -#if DEBUG - #include "global.h" #include "debug.h" #include "constants/items.h" #include "mystery_event_script.h" +#include "berry.h" + +#if DEBUG extern const u8 gUnknown_Debug_845DAE1[]; extern const u8 gUnknown_Debug_845DAE1End[]; -size_t debug_sub_813C404(void * dest) +size_t debug_sub_813C404(u8 * dest) { size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; memcpy(dest, gUnknown_Debug_845DAE1, size); @@ -19,7 +20,7 @@ size_t debug_sub_813C404(void * dest) extern const u8 gUnknown_Debug_845E3E0[]; extern const u8 gUnknown_Debug_845E3E0End[]; -size_t debug_sub_813C430(void * dest) +size_t debug_sub_813C430(u8 * dest) { size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; memcpy(dest, gUnknown_Debug_845E3E0, size); @@ -30,7 +31,7 @@ size_t debug_sub_813C430(void * dest) extern const u8 gUnknown_Debug_845E422[]; extern const u8 gUnknown_Debug_845E422End[]; -size_t debug_sub_813C45C(void * dest) +size_t debug_sub_813C45C(u8 * dest) { size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; memcpy(dest, gUnknown_Debug_845E422, size); @@ -41,7 +42,7 @@ size_t debug_sub_813C45C(void * dest) extern const u8 gUnknown_Debug_845E402[]; extern const u8 gUnknown_Debug_845E402End[]; -size_t debug_sub_813C488(void * dest) +size_t debug_sub_813C488(u8 * dest) { size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; memcpy(dest, gUnknown_Debug_845E402, size); @@ -52,7 +53,7 @@ size_t debug_sub_813C488(void * dest) extern const u8 gUnknown_Debug_845E606[]; extern const u8 gUnknown_Debug_845E606End[]; -size_t debug_sub_813C4B4(void * dest) +size_t debug_sub_813C4B4(u8 * dest) { size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606; memcpy(dest, gUnknown_Debug_845E606, size); @@ -62,7 +63,7 @@ size_t debug_sub_813C4B4(void * dest) extern const u8 gUnknown_Debug_845E619[]; extern const u8 gUnknown_Debug_845E619End[]; -size_t debug_sub_813C4D4(void * dest) +size_t debug_sub_813C4D4(u8 * dest) { size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; memcpy(dest, gUnknown_Debug_845E619, size); @@ -73,7 +74,7 @@ size_t debug_sub_813C4D4(void * dest) extern const u8 gUnknown_Debug_845E712[]; extern const u8 gUnknown_Debug_845E712End[]; -size_t debug_sub_813C500(void * dest) +size_t debug_sub_813C500(u8 * dest) { size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; memcpy(dest, gUnknown_Debug_845E712, size); @@ -85,7 +86,7 @@ extern const u8 gUnknown_Debug_845E797[]; extern const u8 gUnknown_Debug_845E797End[]; extern const u8 gUnknown_Debug_845E7B5[]; -size_t debug_sub_813C52C(void * dest, u16 itemId) +size_t debug_sub_813C52C(u8 * dest, u16 itemId) { u8 * ptr; size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797; @@ -98,24 +99,53 @@ size_t debug_sub_813C52C(void * dest, u16 itemId) return size; } -size_t debug_sub_813C580(void * dest) +size_t debug_sub_813C580(u8 * dest) { return debug_sub_813C52C(dest, ITEM_POTION); } -size_t debug_sub_813C58C(void * dest) +size_t debug_sub_813C58C(u8 * dest) { return debug_sub_813C52C(dest, ITEM_POKE_BALL); } -size_t debug_sub_813C598(void * dest) +size_t debug_sub_813C598(u8 * dest) { return debug_sub_813C52C(dest, ITEM_CHERI_BERRY); } -size_t debug_sub_813C5A4(void * dest) +size_t debug_sub_813C5A4(u8 * dest) { return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); } +extern const u8 gUnknown_Debug_845DDB2[]; +extern const u8 gUnknown_Debug_845DDB2End[]; +extern const u8 gUnknown_Debug_845DDD6[]; + +extern const u8 Str_842E23C[]; //static const u8 Str_842E23C[] = _("ガイブ"); + +size_t debug_sub_813C5B4(u8 * dest) +{ + u8 * saveBerry = (u8 *)&gSaveBlock1.enigmaBerry; + u8 * berry = (u8 *)(dest - gUnknown_Debug_845DDB2 + gUnknown_Debug_845DDD6); + size_t size = gUnknown_Debug_845DDB2End - gUnknown_Debug_845DDB2; + int i; + + debug_sub_80C2C18(Str_842E23C, 0, 0); + + for (i = 0; i < 0x1000; i++) + dest[i] = 0; + + for (i = 0; i < size; i++) + dest[i] = gUnknown_Debug_845DDB2[i]; + + for (i = 0; i < sizeof(struct EnigmaBerry); i++) + berry[i] = saveBerry[i]; + + ClearEnigmaBerries(); + unref_sub_81261B4(dest, gUnknown_Debug_845DDB2); + return size; +} + #endif // DEBUG -- cgit v1.2.3 From 0426e350618857107fd8351e7c05b563152e4fdb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 6 Apr 2018 22:38:12 -0400 Subject: through debug_sub_813C6AC --- asm/unk_debug_menu_3.s | 128 ------------------------------------------- src/debug/unk_debug_menu_3.c | 43 +++++++++++++++ 2 files changed, 43 insertions(+), 128 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index d501950d7..d14bfb3e1 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,134 +5,6 @@ .text - thumb_func_start debug_sub_813C638 -debug_sub_813C638: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add sp, sp, #0xffffffec - mov r8, r0 - add r4, r1, #0 - add r5, r2, #0 - add r6, r3, #0 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - lsl r6, r6, #0x10 - lsr r6, r6, #0x10 - bl ZeroMonData - mov r0, #0x0 - str r0, [sp] - str r0, [sp, #0x4] - mov r0, #0x1 - str r0, [sp, #0x8] - ldr r0, ._25 @ 0x270f - str r0, [sp, #0xc] - mov r0, r8 - add r1, r4, #0 - add r2, r5, #0 - mov r3, #0x20 - bl CreateMon - ldr r2, ._25 + 4 @ Str_842E240 - mov r0, r8 - mov r1, #0x7 - bl SetMonData - ldr r2, ._25 + 8 @ Str_842E248 - mov r0, r8 - mov r1, #0x2 - bl SetMonData - str r6, [sp, #0x10] - mov r0, r8 - mov r1, #0xc - add r2, sp, #0x10 - bl SetMonData - add sp, sp, #0x14 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 -._26: - .align 2, 0 -._25: - .word 0x270f - .word Str_842E240 - .word Str_842E248 - - thumb_func_end debug_sub_813C638 - - thumb_func_start debug_sub_813C6AC -debug_sub_813C6AC: - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - add sp, sp, #0xfffffff8 - add r6, r0, #0 - add r5, r1, #0 - add r0, r5, #0 - bl ClearMailStruct - add r0, r6, #0 - mov r1, #0xc - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - mov r8, r0 - bl ItemIsMail - lsl r0, r0, #0x18 - cmp r0, #0 - beq ._27 @cond_branch - add r4, r5, #0 - add r4, r4, #0x12 - add r7, r5, #0 - add r7, r7, #0x1a - mov r1, #0x9 - add r0, r5, #0 - add r0, r0, #0x10 -._28: - strh r1, [r0] - sub r1, r1, #0x1 - sub r0, r0, #0x2 - cmp r0, r5 - bge ._28 @cond_branch - add r0, r6, #0 - mov r1, #0x7 - mov r2, sp - bl GetMonData - add r0, r4, #0 - mov r1, sp - mov r2, #0x8 - bl StringCopyN - add r0, r6, #0 - mov r1, #0x1 - bl GetMonData - add r1, r7, #0 - bl write_word_to_mem - add r0, r6, #0 - mov r1, #0xb - bl GetMonData - add r4, r0, #0 - lsl r4, r4, #0x10 - lsr r4, r4, #0x10 - add r0, r6, #0 - mov r1, #0x0 - bl GetMonData - add r1, r0, #0 - add r0, r4, #0 - bl SpeciesToMailSpecies - strh r0, [r5, #0x1e] - mov r0, r8 - strh r0, [r5, #0x20] -._27: - add sp, sp, #0x8 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - thumb_func_end debug_sub_813C6AC - thumb_func_start debug_sub_813C740 debug_sub_813C740: push {r4, r5, r6, lr} diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 7e63abbd3..0b348fa0b 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -1,8 +1,11 @@ #include "global.h" #include "debug.h" #include "constants/items.h" +#include "string_util.h" +#include "new_game.h" #include "mystery_event_script.h" #include "berry.h" +#include "mail_data.h" #if DEBUG @@ -148,4 +151,44 @@ size_t debug_sub_813C5B4(u8 * dest) return size; } +extern const u8 Str_842E240[]; +extern const u8 Str_842E248[]; + +void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId) +{ + u32 _itemId; + ZeroMonData(mon); + CreateMon(mon, species, level, 32, FALSE, 0, TRUE, 9999); + SetMonData(mon, MON_DATA_OT_NAME, Str_842E240); + SetMonData(mon, MON_DATA_NICKNAME, Str_842E248); + _itemId = itemId; + SetMonData(mon, MON_DATA_HELD_ITEM, &_itemId); +} + +void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail) +{ + u16 itemId; + ClearMailStruct(mail); + itemId = GetMonData(mon, MON_DATA_HELD_ITEM); + if (ItemIsMail(itemId)) + { + u8 * name = mail->playerName; + u8 * id = mail->trainerId; + u8 nameBuf[8]; + int i; + + for (i = 0; i < 9; i++) + mail->words[i] = i + 1; + + GetMonData(mon, MON_DATA_OT_NAME, nameBuf); + StringCopyN(name, nameBuf, OT_NAME_LENGTH + 1); + + write_word_to_mem(GetMonData(mon, MON_DATA_OT_ID), id); + + mail->species = SpeciesToMailSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_PERSONALITY)); + mail->itemId = itemId; + + } +} + #endif // DEBUG -- cgit v1.2.3 From 5bf9e96c84c5f9253e014416208f32b95a297087 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 13:02:58 -0400 Subject: Decompile nonmatching debug_sub_813C740 --- asm/unk_debug_menu_3.s | 95 ------------------------ data/debug_menu_3.s | 5 +- src/debug/unk_debug_menu_3.c | 173 ++++++++++++++++++++++++++++++++++++++----- 3 files changed, 156 insertions(+), 117 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index d14bfb3e1..cd931e15f 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,101 +5,6 @@ .text - thumb_func_start debug_sub_813C740 -debug_sub_813C740: - push {r4, r5, r6, lr} - mov r6, sl - mov r5, r9 - mov r4, r8 - push {r4, r5, r6} - add sp, sp, #0xffffffd0 - add r6, r0, #0 - ldr r0, ._29 @ gUnknown_Debug_845E443 - mov r8, r0 - ldr r1, ._29 + 4 @ gUnknown_Debug_845E4EF - ldr r5, ._29 + 8 @ gEnemyParty - sub r1, r1, r0 - mov r9, r1 - add r0, r6, #0 - mov r1, r8 - mov r2, r9 - bl memcpy - add r0, r5, #0 - mov r1, #0x19 - mov r2, #0x5 - mov r3, #0x0 - bl debug_sub_813C638 - add r4, sp, #0x24 - mov r0, #0x1 - mov sl, r0 - mov r1, sl - strb r1, [r4] - add r0, r5, #0 - mov r1, #0x2d - add r2, r4, #0 - bl SetMonData - mov r0, #0x3 - strb r0, [r4] - add r0, r5, #0 - mov r1, #0x20 - add r2, r4, #0 - bl SetMonData - mov r0, #0xff - strb r0, [r4] - add r0, r5, #0 - mov r1, #0x23 - add r2, r4, #0 - bl SetMonData - ldr r1, ._29 + 12 @ Str_842E238 - add r0, r4, #0 - mov r2, #0xb - bl StringCopyN - add r0, r5, #0 - mov r1, #0x2 - add r2, r4, #0 - bl SetMonData - mov r0, sl - strb r0, [r4] - add r0, r5, #0 - mov r1, #0x3 - add r2, r4, #0 - bl SetMonData - ldr r0, ._29 + 16 @ gUnknown_Debug_845E467 - add r0, r6, r0 - mov r1, r8 - sub r0, r0, r1 - add r1, r5, #0 - mov r2, #0x64 - bl memcpy - ldr r0, ._29 + 20 @ gUnknown_Debug_845E4CB - add r6, r6, r0 - mov r0, r8 - sub r6, r6, r0 - add r0, r6, #0 - mov r1, sp - mov r2, #0x24 - bl memcpy - mov r0, r9 - add sp, sp, #0x30 - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6} - pop {r1} - bx r1 -._30: - .align 2, 0 -._29: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E4EF - .word gEnemyParty - .word Str_842E238 - .word gUnknown_Debug_845E467 - .word gUnknown_Debug_845E4CB - - thumb_func_end debug_sub_813C740 - thumb_func_start debug_sub_813C810 debug_sub_813C810: push {r4, r5, r6, lr} diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index be2966756..8e478bf46 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -206,6 +206,7 @@ gUnknown_Debug_845E4CB:: .space 36 _0845E461End: .size _0845E461, _0845E461End - _0845E461 +gUnknown_Debug_845E443End:: gUnknown_Debug_845E4EF:: me_checkcompat gUnknown_Debug_845E4EF, 0x4, 0x4, 0x4, 0x80 @@ -271,8 +272,6 @@ gUnknown_Debug_845E712:: _0845E730: me_runscript _0845E736 me_end -_0845E730End: - .size _0845E730, _0845E730End - _0845E730 _0845E736: setvaddress _0845E736 @@ -294,6 +293,8 @@ _0845E75D: _0845E771: .string "Es ist kein Platz für {STR_VAR_1}\n" .string "vorhanden...$" +_0845E730End: + .size _0845E730, _0845E730End - _0845E730 gUnknown_Debug_845E712End:: gUnknown_Debug_845E797:: diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 0b348fa0b..50c9cb5cb 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -1,5 +1,6 @@ #include "global.h" #include "debug.h" +#include "constants/species.h" #include "constants/items.h" #include "string_util.h" #include "new_game.h" @@ -9,8 +10,8 @@ #if DEBUG -extern const u8 gUnknown_Debug_845DAE1[]; -extern const u8 gUnknown_Debug_845DAE1End[]; +extern u8 gUnknown_Debug_845DAE1[]; +extern u8 gUnknown_Debug_845DAE1End[]; size_t debug_sub_813C404(u8 * dest) { @@ -20,8 +21,8 @@ size_t debug_sub_813C404(u8 * dest) return size; } -extern const u8 gUnknown_Debug_845E3E0[]; -extern const u8 gUnknown_Debug_845E3E0End[]; +extern u8 gUnknown_Debug_845E3E0[]; +extern u8 gUnknown_Debug_845E3E0End[]; size_t debug_sub_813C430(u8 * dest) { @@ -31,8 +32,8 @@ size_t debug_sub_813C430(u8 * dest) return size; } -extern const u8 gUnknown_Debug_845E422[]; -extern const u8 gUnknown_Debug_845E422End[]; +extern u8 gUnknown_Debug_845E422[]; +extern u8 gUnknown_Debug_845E422End[]; size_t debug_sub_813C45C(u8 * dest) { @@ -42,8 +43,8 @@ size_t debug_sub_813C45C(u8 * dest) return size; } -extern const u8 gUnknown_Debug_845E402[]; -extern const u8 gUnknown_Debug_845E402End[]; +extern u8 gUnknown_Debug_845E402[]; +extern u8 gUnknown_Debug_845E402End[]; size_t debug_sub_813C488(u8 * dest) { @@ -53,8 +54,8 @@ size_t debug_sub_813C488(u8 * dest) return size; } -extern const u8 gUnknown_Debug_845E606[]; -extern const u8 gUnknown_Debug_845E606End[]; +extern u8 gUnknown_Debug_845E606[]; +extern u8 gUnknown_Debug_845E606End[]; size_t debug_sub_813C4B4(u8 * dest) { @@ -63,8 +64,8 @@ size_t debug_sub_813C4B4(u8 * dest) return size; } -extern const u8 gUnknown_Debug_845E619[]; -extern const u8 gUnknown_Debug_845E619End[]; +extern u8 gUnknown_Debug_845E619[]; +extern u8 gUnknown_Debug_845E619End[]; size_t debug_sub_813C4D4(u8 * dest) { @@ -74,8 +75,8 @@ size_t debug_sub_813C4D4(u8 * dest) return size; } -extern const u8 gUnknown_Debug_845E712[]; -extern const u8 gUnknown_Debug_845E712End[]; +extern u8 gUnknown_Debug_845E712[]; +extern u8 gUnknown_Debug_845E712End[]; size_t debug_sub_813C500(u8 * dest) { @@ -85,9 +86,9 @@ size_t debug_sub_813C500(u8 * dest) return size; } -extern const u8 gUnknown_Debug_845E797[]; -extern const u8 gUnknown_Debug_845E797End[]; -extern const u8 gUnknown_Debug_845E7B5[]; +extern u8 gUnknown_Debug_845E797[]; +extern u8 gUnknown_Debug_845E797End[]; +extern u8 gUnknown_Debug_845E7B5[]; size_t debug_sub_813C52C(u8 * dest, u16 itemId) { @@ -122,9 +123,9 @@ size_t debug_sub_813C5A4(u8 * dest) return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); } -extern const u8 gUnknown_Debug_845DDB2[]; -extern const u8 gUnknown_Debug_845DDB2End[]; -extern const u8 gUnknown_Debug_845DDD6[]; +extern u8 gUnknown_Debug_845DDB2[]; +extern u8 gUnknown_Debug_845DDB2End[]; +extern u8 gUnknown_Debug_845DDD6[]; extern const u8 Str_842E23C[]; //static const u8 Str_842E23C[] = _("ガイブ"); @@ -191,4 +192,136 @@ void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail) } } +extern u8 gUnknown_Debug_845E443[]; +extern u8 gUnknown_Debug_845E443End[]; +extern u8 gUnknown_Debug_845E467[]; +extern u8 gUnknown_Debug_845E4CB[]; +extern const u8 Str_842E238[]; + +#ifdef NONMATCHING +size_t debug_sub_813C740(u8 * dest) +{ + struct MailStruct mail; + struct Pokemon *mon = gEnemyParty; + size_t size = gUnknown_Debug_845E443End - gUnknown_Debug_845E443; + u8 dataBuffer[11]; + + memcpy(dest, gUnknown_Debug_845E443, size); + debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); + dataBuffer[0] = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); + dataBuffer[0] = 3; + SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer); + dataBuffer[0] = 255; + SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); + + StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH); + SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); + + dataBuffer[0] = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); + + // nonmatching pointer arithmetic + memcpy(gUnknown_Debug_845E467 - gUnknown_Debug_845E443 + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - gUnknown_Debug_845E443 + dest, &mail, sizeof(struct MailStruct)); + + return size; +} +#else +__attribute__((naked)) size_t debug_sub_813C740(u8 * dest) +{ + asm("\tpush\t{r4, r5, r6, lr}\n" + "\tmov\tr6, sl\n" + "\tmov\tr5, r9\n" + "\tmov\tr4, r8\n" + "\tpush\t{r4, r5, r6}\n" + "\tadd\tsp, sp, #0xffffffd0\n" + "\tadd\tr6, r0, #0\n" + "\tldr\tr0, ._29 @ gUnknown_Debug_845E443\n" + "\tmov\tr8, r0\n" + "\tldr\tr1, ._29 + 4 @ gUnknown_Debug_845E4EF\n" + "\tldr\tr5, ._29 + 8 @ gEnemyParty\n" + "\tsub\tr1, r1, r0\n" + "\tmov\tr9, r1\n" + "\tadd\tr0, r6, #0\n" + "\tmov\tr1, r8\n" + "\tmov\tr2, r9\n" + "\tbl\tmemcpy\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x19\n" + "\tmov\tr2, #0x5\n" + "\tmov\tr3, #0x0\n" + "\tbl\tdebug_sub_813C638\n" + "\tadd\tr4, sp, #0x24\n" + "\tmov\tr0, #0x1\n" + "\tmov\tsl, r0\n" + "\tmov\tr1, sl\n" + "\tstrb\tr1, [r4]\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x2d\n" + "\tadd\tr2, r4, #0\n" + "\tbl\tSetMonData\n" + "\tmov\tr0, #0x3\n" + "\tstrb\tr0, [r4]\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x20\n" + "\tadd\tr2, r4, #0\n" + "\tbl\tSetMonData\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r4]\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x23\n" + "\tadd\tr2, r4, #0\n" + "\tbl\tSetMonData\n" + "\tldr\tr1, ._29 + 12 @ Str_842E238\n" + "\tadd\tr0, r4, #0\n" + "\tmov\tr2, #0xb\n" + "\tbl\tStringCopyN\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x2\n" + "\tadd\tr2, r4, #0\n" + "\tbl\tSetMonData\n" + "\tmov\tr0, sl\n" + "\tstrb\tr0, [r4]\n" + "\tadd\tr0, r5, #0\n" + "\tmov\tr1, #0x3\n" + "\tadd\tr2, r4, #0\n" + "\tbl\tSetMonData\n" + "\tldr\tr0, ._29 + 16 @ gUnknown_Debug_845E467\n" + "\tadd\tr0, r6, r0\n" + "\tmov\tr1, r8\n" + "\tsub\tr0, r0, r1\n" + "\tadd\tr1, r5, #0\n" + "\tmov\tr2, #0x64\n" + "\tbl\tmemcpy\n" + "\tldr\tr0, ._29 + 20 @ gUnknown_Debug_845E4CB\n" + "\tadd\tr6, r6, r0\n" + "\tmov\tr0, r8\n" + "\tsub\tr6, r6, r0\n" + "\tadd\tr0, r6, #0\n" + "\tmov\tr1, sp\n" + "\tmov\tr2, #0x24\n" + "\tbl\tmemcpy\n" + "\tmov\tr0, r9\n" + "\tadd\tsp, sp, #0x30\n" + "\tpop\t{r3, r4, r5}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tmov\tsl, r5\n" + "\tpop\t{r4, r5, r6}\n" + "\tpop\t{r1}\n" + "\tbx\tr1\n" + "._30:\n" + "\t.align\t2, 0\n" + "._29:\n" + "\t.word\tgUnknown_Debug_845E443\n" + "\t.word\tgUnknown_Debug_845E4EF\n" + "\t.word\tgEnemyParty\n" + "\t.word\tStr_842E238\n" + "\t.word\tgUnknown_Debug_845E467\n" + "\t.word\tgUnknown_Debug_845E4CB"); +} +#endif + #endif // DEBUG -- cgit v1.2.3 From 28565a3fe307d906cceb562c1ffe526f3d94cfc8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 13:20:26 -0400 Subject: I struggle to hold back my words about debug_sub_813C810 --- asm/unk_debug_menu_3.s | 57 ------------------------------- src/debug/unk_debug_menu_3.c | 81 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 58 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index cd931e15f..162558160 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,63 +5,6 @@ .text - thumb_func_start debug_sub_813C810 -debug_sub_813C810: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add sp, sp, #0xffffffdc - add r6, r0, #0 - ldr r5, ._31 @ gUnknown_Debug_845E443 - ldr r0, ._31 + 4 @ gUnknown_Debug_845E4EF - ldr r4, ._31 + 8 @ gEnemyParty - sub r0, r0, r5 - mov r8, r0 - add r0, r6, #0 - add r1, r5, #0 - mov r2, r8 - bl memcpy - add r0, r4, #0 - mov r1, #0xc9 - mov r2, #0x15 - mov r3, #0x82 - bl debug_sub_813C638 - add r0, r4, #0 - mov r1, sp - bl debug_sub_813C6AC - ldr r0, ._31 + 12 @ gUnknown_Debug_845E467 - add r0, r6, r0 - sub r0, r0, r5 - add r1, r4, #0 - mov r2, #0x64 - bl memcpy - ldr r0, ._31 + 16 @ gUnknown_Debug_845E4CB - add r0, r6, r0 - sub r0, r0, r5 - mov r1, sp - mov r2, #0x24 - bl memcpy - add r0, r6, #0 - add r1, r5, #0 - bl unref_sub_812620C - mov r0, r8 - add sp, sp, #0x24 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r1} - bx r1 -._32: - .align 2, 0 -._31: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E4EF - .word gEnemyParty - .word gUnknown_Debug_845E467 - .word gUnknown_Debug_845E4CB - - thumb_func_end debug_sub_813C810 - thumb_func_start debug_sub_813C888 debug_sub_813C888: push {r4, r5, r6, lr} diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 50c9cb5cb..7b9d2bbaa 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -322,6 +322,85 @@ __attribute__((naked)) size_t debug_sub_813C740(u8 * dest) "\t.word\tgUnknown_Debug_845E467\n" "\t.word\tgUnknown_Debug_845E4CB"); } -#endif +#endif // NONMATCHING + +#ifdef NONMATCHING +// same reason as before +size_t debug_sub_813C810(u8 * dest) +{ + struct MailStruct mail; + size_t size = gUnknown_Debug_845E443End - gUnknown_Debug_845E443; + struct Pokemon *mon = gEnemyParty; + + memcpy(dest, gUnknown_Debug_845E443, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 5, ITEM_NONE); + debug_sub_813C6AC(mon, &mail); + + // nonmatching pointer arithmetic + memcpy(gUnknown_Debug_845E467 - gUnknown_Debug_845E443 + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - gUnknown_Debug_845E443 + dest, &mail, sizeof(struct MailStruct)); + + unref_sub_812620C(dest, gUnknown_Debug_845E443); + + return size; +} +#else +__attribute__((naked)) size_t debug_sub_813C810(u8 * dest) +{ + asm("\tpush\t{r4, r5, r6, lr}\n" + "\tmov\tr6, r8\n" + "\tpush\t{r6}\n" + "\tadd\tsp, sp, #0xffffffdc\n" + "\tadd\tr6, r0, #0\n" + "\tldr\tr5, ._31 @ gUnknown_Debug_845E443\n" + "\tldr\tr0, ._31 + 4 @ gUnknown_Debug_845E4EF\n" + "\tldr\tr4, ._31 + 8 @ gEnemyParty\n" + "\tsub\tr0, r0, r5\n" + "\tmov\tr8, r0\n" + "\tadd\tr0, r6, #0\n" + "\tadd\tr1, r5, #0\n" + "\tmov\tr2, r8\n" + "\tbl\tmemcpy\n" + "\tadd\tr0, r4, #0\n" + "\tmov\tr1, #0xc9\n" + "\tmov\tr2, #0x15\n" + "\tmov\tr3, #0x82\n" + "\tbl\tdebug_sub_813C638\n" + "\tadd\tr0, r4, #0\n" + "\tmov\tr1, sp\n" + "\tbl\tdebug_sub_813C6AC\n" + "\tldr\tr0, ._31 + 12 @ gUnknown_Debug_845E467\n" + "\tadd\tr0, r6, r0\n" + "\tsub\tr0, r0, r5\n" + "\tadd\tr1, r4, #0\n" + "\tmov\tr2, #0x64\n" + "\tbl\tmemcpy\n" + "\tldr\tr0, ._31 + 16 @ gUnknown_Debug_845E4CB\n" + "\tadd\tr0, r6, r0\n" + "\tsub\tr0, r0, r5\n" + "\tmov\tr1, sp\n" + "\tmov\tr2, #0x24\n" + "\tbl\tmemcpy\n" + "\tadd\tr0, r6, #0\n" + "\tadd\tr1, r5, #0\n" + "\tbl\tunref_sub_812620C\n" + "\tmov\tr0, r8\n" + "\tadd\tsp, sp, #0x24\n" + "\tpop\t{r3}\n" + "\tmov\tr8, r3\n" + "\tpop\t{r4, r5, r6}\n" + "\tpop\t{r1}\n" + "\tbx\tr1\n" + "._32:\n" + "\t.align\t2, 0\n" + "._31:\n" + "\t.word\tgUnknown_Debug_845E443\n" + "\t.word\tgUnknown_Debug_845E4EF\n" + "\t.word\tgEnemyParty\n" + "\t.word\tgUnknown_Debug_845E467\n" + "\t.word\tgUnknown_Debug_845E4CB"); +} +#endif // NONMATCHING #endif // DEBUG -- cgit v1.2.3 From 0d6c2a9b1b1cfc3eba7dfe51066f8520283fc28f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 13:29:59 -0400 Subject: debug_sub_813C888; and then everything matched --- asm/unk_debug_menu_3.s | 59 ------------- src/debug/unk_debug_menu_3.c | 199 ++++++++----------------------------------- 2 files changed, 36 insertions(+), 222 deletions(-) diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s index 162558160..46e91de8e 100644 --- a/asm/unk_debug_menu_3.s +++ b/asm/unk_debug_menu_3.s @@ -5,65 +5,6 @@ .text - thumb_func_start debug_sub_813C888 -debug_sub_813C888: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add sp, sp, #0xffffffdc - add r6, r0, #0 - ldr r5, ._33 @ gUnknown_Debug_845E443 - ldr r0, ._33 + 4 @ gUnknown_Debug_845E4EF - ldr r4, ._33 + 8 @ gEnemyParty - sub r0, r0, r5 - mov r8, r0 - add r0, r6, #0 - add r1, r5, #0 - mov r2, r8 - bl memcpy - add r0, r4, #0 - mov r1, #0xc9 - mov r2, #0x15 - mov r3, #0x82 - bl debug_sub_813C638 - add r0, r4, #0 - mov r1, sp - bl debug_sub_813C6AC - mov r0, #0x0 - strh r0, [r4, #0x1c] - ldr r0, ._33 + 12 @ gUnknown_Debug_845E467 - add r0, r6, r0 - sub r0, r0, r5 - add r1, r4, #0 - mov r2, #0x64 - bl memcpy - ldr r0, ._33 + 16 @ gUnknown_Debug_845E4CB - add r0, r6, r0 - sub r0, r0, r5 - mov r1, sp - mov r2, #0x24 - bl memcpy - add r0, r6, #0 - add r1, r5, #0 - bl unref_sub_812620C - mov r0, r8 - add sp, sp, #0x24 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r1} - bx r1 -._34: - .align 2, 0 -._33: - .word gUnknown_Debug_845E443 - .word gUnknown_Debug_845E4EF - .word gEnemyParty - .word gUnknown_Debug_845E467 - .word gUnknown_Debug_845E4CB - - thumb_func_end debug_sub_813C888 - thumb_func_start debug_sub_813C904 debug_sub_813C904: push {r4, lr} diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 7b9d2bbaa..6cadea1eb 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -198,15 +198,16 @@ extern u8 gUnknown_Debug_845E467[]; extern u8 gUnknown_Debug_845E4CB[]; extern const u8 Str_842E238[]; -#ifdef NONMATCHING size_t debug_sub_813C740(u8 * dest) { struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; struct Pokemon *mon = gEnemyParty; - size_t size = gUnknown_Debug_845E443End - gUnknown_Debug_845E443; + size_t size = end - src; u8 dataBuffer[11]; - memcpy(dest, gUnknown_Debug_845E443, size); + memcpy(dest, src, size); debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); dataBuffer[0] = TRUE; SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); @@ -215,192 +216,64 @@ size_t debug_sub_813C740(u8 * dest) dataBuffer[0] = 255; SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); - StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH); + StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1); SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); dataBuffer[0] = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); // nonmatching pointer arithmetic - memcpy(gUnknown_Debug_845E467 - gUnknown_Debug_845E443 + dest, mon, sizeof(struct Pokemon)); + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); - memcpy(gUnknown_Debug_845E4CB - gUnknown_Debug_845E443 + dest, &mail, sizeof(struct MailStruct)); + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); return size; } -#else -__attribute__((naked)) size_t debug_sub_813C740(u8 * dest) -{ - asm("\tpush\t{r4, r5, r6, lr}\n" - "\tmov\tr6, sl\n" - "\tmov\tr5, r9\n" - "\tmov\tr4, r8\n" - "\tpush\t{r4, r5, r6}\n" - "\tadd\tsp, sp, #0xffffffd0\n" - "\tadd\tr6, r0, #0\n" - "\tldr\tr0, ._29 @ gUnknown_Debug_845E443\n" - "\tmov\tr8, r0\n" - "\tldr\tr1, ._29 + 4 @ gUnknown_Debug_845E4EF\n" - "\tldr\tr5, ._29 + 8 @ gEnemyParty\n" - "\tsub\tr1, r1, r0\n" - "\tmov\tr9, r1\n" - "\tadd\tr0, r6, #0\n" - "\tmov\tr1, r8\n" - "\tmov\tr2, r9\n" - "\tbl\tmemcpy\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x19\n" - "\tmov\tr2, #0x5\n" - "\tmov\tr3, #0x0\n" - "\tbl\tdebug_sub_813C638\n" - "\tadd\tr4, sp, #0x24\n" - "\tmov\tr0, #0x1\n" - "\tmov\tsl, r0\n" - "\tmov\tr1, sl\n" - "\tstrb\tr1, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x2d\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tmov\tr0, #0x3\n" - "\tstrb\tr0, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x20\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tmov\tr0, #0xff\n" - "\tstrb\tr0, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x23\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tldr\tr1, ._29 + 12 @ Str_842E238\n" - "\tadd\tr0, r4, #0\n" - "\tmov\tr2, #0xb\n" - "\tbl\tStringCopyN\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x2\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tmov\tr0, sl\n" - "\tstrb\tr0, [r4]\n" - "\tadd\tr0, r5, #0\n" - "\tmov\tr1, #0x3\n" - "\tadd\tr2, r4, #0\n" - "\tbl\tSetMonData\n" - "\tldr\tr0, ._29 + 16 @ gUnknown_Debug_845E467\n" - "\tadd\tr0, r6, r0\n" - "\tmov\tr1, r8\n" - "\tsub\tr0, r0, r1\n" - "\tadd\tr1, r5, #0\n" - "\tmov\tr2, #0x64\n" - "\tbl\tmemcpy\n" - "\tldr\tr0, ._29 + 20 @ gUnknown_Debug_845E4CB\n" - "\tadd\tr6, r6, r0\n" - "\tmov\tr0, r8\n" - "\tsub\tr6, r6, r0\n" - "\tadd\tr0, r6, #0\n" - "\tmov\tr1, sp\n" - "\tmov\tr2, #0x24\n" - "\tbl\tmemcpy\n" - "\tmov\tr0, r9\n" - "\tadd\tsp, sp, #0x30\n" - "\tpop\t{r3, r4, r5}\n" - "\tmov\tr8, r3\n" - "\tmov\tr9, r4\n" - "\tmov\tsl, r5\n" - "\tpop\t{r4, r5, r6}\n" - "\tpop\t{r1}\n" - "\tbx\tr1\n" - "._30:\n" - "\t.align\t2, 0\n" - "._29:\n" - "\t.word\tgUnknown_Debug_845E443\n" - "\t.word\tgUnknown_Debug_845E4EF\n" - "\t.word\tgEnemyParty\n" - "\t.word\tStr_842E238\n" - "\t.word\tgUnknown_Debug_845E467\n" - "\t.word\tgUnknown_Debug_845E4CB"); -} -#endif // NONMATCHING -#ifdef NONMATCHING // same reason as before size_t debug_sub_813C810(u8 * dest) { struct MailStruct mail; - size_t size = gUnknown_Debug_845E443End - gUnknown_Debug_845E443; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; struct Pokemon *mon = gEnemyParty; + size_t size = end - src; - memcpy(dest, gUnknown_Debug_845E443, size); - debug_sub_813C638(mon, SPECIES_UNOWN, 5, ITEM_NONE); + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); debug_sub_813C6AC(mon, &mail); // nonmatching pointer arithmetic - memcpy(gUnknown_Debug_845E467 - gUnknown_Debug_845E443 + dest, mon, sizeof(struct Pokemon)); + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); - memcpy(gUnknown_Debug_845E4CB - gUnknown_Debug_845E443 + dest, &mail, sizeof(struct MailStruct)); + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); - unref_sub_812620C(dest, gUnknown_Debug_845E443); + unref_sub_812620C(dest, src); return size; } -#else -__attribute__((naked)) size_t debug_sub_813C810(u8 * dest) + +size_t debug_sub_813C888(u8 * dest) { - asm("\tpush\t{r4, r5, r6, lr}\n" - "\tmov\tr6, r8\n" - "\tpush\t{r6}\n" - "\tadd\tsp, sp, #0xffffffdc\n" - "\tadd\tr6, r0, #0\n" - "\tldr\tr5, ._31 @ gUnknown_Debug_845E443\n" - "\tldr\tr0, ._31 + 4 @ gUnknown_Debug_845E4EF\n" - "\tldr\tr4, ._31 + 8 @ gEnemyParty\n" - "\tsub\tr0, r0, r5\n" - "\tmov\tr8, r0\n" - "\tadd\tr0, r6, #0\n" - "\tadd\tr1, r5, #0\n" - "\tmov\tr2, r8\n" - "\tbl\tmemcpy\n" - "\tadd\tr0, r4, #0\n" - "\tmov\tr1, #0xc9\n" - "\tmov\tr2, #0x15\n" - "\tmov\tr3, #0x82\n" - "\tbl\tdebug_sub_813C638\n" - "\tadd\tr0, r4, #0\n" - "\tmov\tr1, sp\n" - "\tbl\tdebug_sub_813C6AC\n" - "\tldr\tr0, ._31 + 12 @ gUnknown_Debug_845E467\n" - "\tadd\tr0, r6, r0\n" - "\tsub\tr0, r0, r5\n" - "\tadd\tr1, r4, #0\n" - "\tmov\tr2, #0x64\n" - "\tbl\tmemcpy\n" - "\tldr\tr0, ._31 + 16 @ gUnknown_Debug_845E4CB\n" - "\tadd\tr0, r6, r0\n" - "\tsub\tr0, r0, r5\n" - "\tmov\tr1, sp\n" - "\tmov\tr2, #0x24\n" - "\tbl\tmemcpy\n" - "\tadd\tr0, r6, #0\n" - "\tadd\tr1, r5, #0\n" - "\tbl\tunref_sub_812620C\n" - "\tmov\tr0, r8\n" - "\tadd\tsp, sp, #0x24\n" - "\tpop\t{r3}\n" - "\tmov\tr8, r3\n" - "\tpop\t{r4, r5, r6}\n" - "\tpop\t{r1}\n" - "\tbx\tr1\n" - "._32:\n" - "\t.align\t2, 0\n" - "._31:\n" - "\t.word\tgUnknown_Debug_845E443\n" - "\t.word\tgUnknown_Debug_845E4EF\n" - "\t.word\tgEnemyParty\n" - "\t.word\tgUnknown_Debug_845E467\n" - "\t.word\tgUnknown_Debug_845E4CB"); + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + mon->box.checksum = 0; + + // nonmatching pointer arithmetic + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + unref_sub_812620C(dest, src); + + return size; } -#endif // NONMATCHING #endif // DEBUG -- cgit v1.2.3 From eaaa093ccaca498e79a0630941cfba0f31fbd9fb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 13:39:52 -0400 Subject: finish decompiling unk_debug_menu_3 code --- asm/unk_debug_menu_3.s | 82 -------------------------------------------- data/debug_menu_3.s | 1 + include/start_menu.h | 1 + ld_script.txt | 1 - src/debug/unk_debug_menu_3.c | 34 ++++++++++++++++-- 5 files changed, 33 insertions(+), 86 deletions(-) delete mode 100644 asm/unk_debug_menu_3.s diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s deleted file mode 100644 index 46e91de8e..000000000 --- a/asm/unk_debug_menu_3.s +++ /dev/null @@ -1,82 +0,0 @@ -.if DEBUG - - .include "constants/gba_constants.inc" - .include "include/macros.inc" - - .text - - thumb_func_start debug_sub_813C904 -debug_sub_813C904: - push {r4, lr} - ldr r4, ._35 @ gPlayerParty - add r0, r4, #0 - mov r1, #0x5 - mov r2, #0x32 - mov r3, #0xb7 - bl debug_sub_813C638 - add r0, r4, #0 - add r0, r0, #0x64 - mov r1, #0x8 - mov r2, #0x32 - mov r3, #0xc4 - bl debug_sub_813C638 - add r4, r4, #0xc8 - add r0, r4, #0 - mov r1, #0x2 - mov r2, #0x32 - mov r3, #0x8d - bl debug_sub_813C638 - pop {r4} - pop {r0} - bx r0 -._36: - .align 2, 0 -._35: - .word gPlayerParty - - thumb_func_end debug_sub_813C904 - - thumb_func_start debug_sub_813C93C -debug_sub_813C93C: - push {r4, r5, r6, lr} - add sp, sp, #0xffffff44 - add r4, r0, #0 - ldr r6, ._37 @ gUnknown_Debug_845E4EF - ldr r5, ._37 + 4 @ gUnknown_Debug_845E606 - sub r5, r5, r6 - add r1, r6, #0 - add r2, r5, #0 - bl memcpy - bl SavePlayerParty - bl debug_sub_813C904 - ldr r1, ._37 + 8 @ Str_842E253 - ldr r2, ._37 + 12 @ 0x270f - mov r0, sp - bl debug_sub_8075DB4 - bl LoadPlayerParty - ldr r0, ._37 + 16 @ gUnknown_Debug_845E506 - add r4, r4, r0 - sub r4, r4, r6 - add r0, r4, #0 - mov r1, sp - mov r2, #0xbc - bl memcpy - add r0, r5, #0 - add sp, sp, #0xbc - pop {r4, r5, r6} - pop {r1} - bx r1 -._38: - .align 2, 0 -._37: - .word gUnknown_Debug_845E4EF - .word gUnknown_Debug_845E606 - .word Str_842E253+5 @ weird... - .word 0x270f - .word gUnknown_Debug_845E506 - - thumb_func_end debug_sub_813C93C - - .align 2, 0 - -.endif diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s index 8e478bf46..37d7585b2 100644 --- a/data/debug_menu_3.s +++ b/data/debug_menu_3.s @@ -215,6 +215,7 @@ gUnknown_Debug_845E4EF:: gUnknown_Debug_845E506:: .space 256 +gUnknown_Debug_845E4EFEnd:: gUnknown_Debug_845E606:: me_checkcompat gUnknown_Debug_845E606, 0x4, 0x4, 0x4, 0x80 diff --git a/include/start_menu.h b/include/start_menu.h index 5e513b9dc..87f6828ab 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -9,5 +9,6 @@ void sub_80712B4(u8 taskId); void sub_8071310(void); void ScrSpecial_DoSaveDialog(void); void sub_8071B28(void); +void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId); #endif // GUARD_STARTER_CHOOSE_H diff --git a/ld_script.txt b/ld_script.txt index 56d1ac39f..dffcb1fef 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -364,7 +364,6 @@ SECTIONS { src/save.o(.text); src/mystery_event_script.o(.text); src/debug/unk_debug_menu_3.o(.text); - asm/unk_debug_menu_3.o(.text); src/field_effect_helpers.o(.text); src/contest_ai.o(.text); src/unused_81258BC.o(.text); diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 6cadea1eb..373c01f5b 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -4,6 +4,8 @@ #include "constants/items.h" #include "string_util.h" #include "new_game.h" +#include "load_save.h" +#include "start_menu.h" #include "mystery_event_script.h" #include "berry.h" #include "mail_data.h" @@ -222,7 +224,6 @@ size_t debug_sub_813C740(u8 * dest) dataBuffer[0] = LANGUAGE_JAPANESE; SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); - // nonmatching pointer arithmetic memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); @@ -243,7 +244,6 @@ size_t debug_sub_813C810(u8 * dest) debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); debug_sub_813C6AC(mon, &mail); - // nonmatching pointer arithmetic memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); @@ -266,7 +266,6 @@ size_t debug_sub_813C888(u8 * dest) debug_sub_813C6AC(mon, &mail); mon->box.checksum = 0; - // nonmatching pointer arithmetic memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); @@ -276,4 +275,33 @@ size_t debug_sub_813C888(u8 * dest) return size; } +void debug_sub_813C904(void) +{ + debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW); + debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND); + debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY); +} + +extern u8 gUnknown_Debug_845E4EF[]; +extern u8 gUnknown_Debug_845E4EFEnd[]; +extern u8 gUnknown_Debug_845E506[]; +extern const u8 Str_842E253[]; + +size_t debug_sub_813C93C(u8 * dest) +{ + u8 * src = gUnknown_Debug_845E4EF; + size_t size = gUnknown_Debug_845E4EFEnd - src; + struct BattleTowerEReaderTrainer ereaderTrainer; + + memcpy(dest, src, size); + SavePlayerParty(); + debug_sub_813C904(); + debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999); + LoadPlayerParty(); + + memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer)); + + return size; +} + #endif // DEBUG -- cgit v1.2.3 From b8aa92332113127b908973d681c287b32e538a15 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 13:50:24 -0400 Subject: Decompile rodata --- data/unk_debug_menu_3.s | 105 ------------------------------------------- ld_script.txt | 1 - src/debug/unk_debug_menu_3.c | 73 +++++++++++++++++++++++++++--- 3 files changed, 67 insertions(+), 112 deletions(-) delete mode 100644 data/unk_debug_menu_3.s diff --git a/data/unk_debug_menu_3.s b/data/unk_debug_menu_3.s deleted file mode 100644 index 100821c9b..000000000 --- a/data/unk_debug_menu_3.s +++ /dev/null @@ -1,105 +0,0 @@ - .section .rodata - - .align 2 - -Str_842E238:: @ 0x842E238 - .string "タマゴ$" - -.if DEBUG - -Str_842E23C:: @ 0x842E23C - .string "ガイブ$" - -Str_842E240:: @ 0x842E240 - .string "ENGLISH$" - -Str_842E248:: @ 0x842E248 - .string "TOURNAMENT$" - -Str_842E253:: @ 0x842E253 - .string " そら  カードイー$" - -Str_842E25E:: @ 0x842E25E - .string "ポケコッコ$" - -Str_842E264:: @ 0x842E264 - .string "ticket$" - -Str_842E26B:: @ 0x842E26B - .string "{PKMN}$" - -Str_842E26E:: @ 0x842E26E - .string "wrong {PKMN}$" - -Str_842E277:: @ 0x842E277 - .string "ribbon$" - -Str_842E27E:: @ 0x842E27E - .string "DEX$" - -Str_842E282:: @ 0x842E282 - .string "message$" - -Str_842E28A:: @ 0x842E28A - .string "egg$" - -Str_842E28E:: @ 0x842E28E - .string "RAM seed$" - -Str_842E297:: @ 0x842E297 - .string "trainer$" - -Str_842E29F:: @ 0x842E29F - .string "clock$" - -Str_842E2A5:: @ 0x842E2A5 - .string "item$" - -Str_842E2AA:: @ 0x842E2AA - .string "goods$" - -Str_842E2B0:: @ 0x842E2B0 - .string "potion$" - -Str_842E2B7:: @ 0x842E2B7 - .string "ball$" - -Str_842E2BC:: @ 0x842E2BC - .string "cheri berry$" - -Str_842E2C8:: @ 0x842E2C8 - .string "TM01$" - - .align 2 -gUnknown_Debug_842E2D0:: - .4byte Str_842E264, debug_sub_813C404+1 - .4byte Str_842E26B, debug_sub_813C810+1 - .4byte Str_842E26E, debug_sub_813C888+1 - .4byte Str_842E277, debug_sub_813C430+1 - .4byte Str_842E27E, debug_sub_813C488+1 - .4byte Str_842E282, debug_sub_813C45C+1 - .4byte Str_842E28A, debug_sub_813C740+1 - .4byte Str_842E28E, debug_sub_813C5B4+1 - .4byte Str_842E297, debug_sub_813C93C+1 - .4byte Str_842E29F, debug_sub_813C4B4+1 - .4byte Str_842E2A5, debug_sub_813C4D4+1 - .4byte Str_842E2AA, debug_sub_813C500+1 - .4byte Str_842E2B0, debug_sub_813C580+1 - .4byte Str_842E2B7, debug_sub_813C58C+1 - .4byte Str_842E2BC, debug_sub_813C598+1 - .4byte Str_842E2C8, debug_sub_813C5A4+1 - -gUnknown_Debug_842E350:: - .4byte 0x10 - .4byte gUnknown_Debug_845DAE1 - .4byte gUnknown_Debug_845DDB2 - .4byte gUnknown_Debug_845E306 - .4byte gUnknown_Debug_845E3E0 - .4byte gUnknown_Debug_845E3E0 - .4byte gUnknown_Debug_845E402 - .4byte gUnknown_Debug_845E402 - .4byte gUnknown_Debug_845E422 - .4byte gUnknown_Debug_845E422 - .4byte gUnknown_Debug_845E443 - -.endif diff --git a/ld_script.txt b/ld_script.txt index dffcb1fef..d6a7bfb98 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -648,7 +648,6 @@ SECTIONS { src/cable_car.o(.rodata); src/save.o(.rodata); src/debug/unk_debug_menu_3.o(.rodata); - data/unk_debug_menu_3.o(.rodata); src/field_effect_helpers.o(.rodata); src/contest_ai.o(.rodata); src/battle/battle_controller_safari.o(.rodata); diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 373c01f5b..f9ae9b4b5 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -10,6 +10,8 @@ #include "berry.h" #include "mail_data.h" +const u8 Str_842E238[] = _("タマゴ"); + #if DEBUG extern u8 gUnknown_Debug_845DAE1[]; @@ -129,7 +131,7 @@ extern u8 gUnknown_Debug_845DDB2[]; extern u8 gUnknown_Debug_845DDB2End[]; extern u8 gUnknown_Debug_845DDD6[]; -extern const u8 Str_842E23C[]; //static const u8 Str_842E23C[] = _("ガイブ"); +const u8 Str_842E23C[] = _("ガイブ"); size_t debug_sub_813C5B4(u8 * dest) { @@ -154,8 +156,8 @@ size_t debug_sub_813C5B4(u8 * dest) return size; } -extern const u8 Str_842E240[]; -extern const u8 Str_842E248[]; +const u8 Str_842E240[] = _("ENGLISH"); +const u8 Str_842E248[] = _("TOURNAMENT"); void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId) { @@ -198,7 +200,6 @@ extern u8 gUnknown_Debug_845E443[]; extern u8 gUnknown_Debug_845E443End[]; extern u8 gUnknown_Debug_845E467[]; extern u8 gUnknown_Debug_845E4CB[]; -extern const u8 Str_842E238[]; size_t debug_sub_813C740(u8 * dest) { @@ -231,7 +232,6 @@ size_t debug_sub_813C740(u8 * dest) return size; } -// same reason as before size_t debug_sub_813C810(u8 * dest) { struct MailStruct mail; @@ -285,7 +285,8 @@ void debug_sub_813C904(void) extern u8 gUnknown_Debug_845E4EF[]; extern u8 gUnknown_Debug_845E4EFEnd[]; extern u8 gUnknown_Debug_845E506[]; -extern const u8 Str_842E253[]; + +const u8 Str_842E253[] = _(" そら  カードイー"); size_t debug_sub_813C93C(u8 * dest) { @@ -304,4 +305,64 @@ size_t debug_sub_813C93C(u8 * dest) return size; } +const u8 Str_842E25E[] = _("ポケコッコ"); +const u8 Str_842E264[] = _("ticket"); +const u8 Str_842E26B[] = _("{PKMN}"); +const u8 Str_842E26E[] = _("wrong {PKMN}"); +const u8 Str_842E277[] = _("ribbon"); +const u8 Str_842E27E[] = _("DEX"); +const u8 Str_842E282[] = _("message"); +const u8 Str_842E28A[] = _("egg"); +const u8 Str_842E28E[] = _("RAM seed"); +const u8 Str_842E297[] = _("trainer"); +const u8 Str_842E29F[] = _("clock"); +const u8 Str_842E2A5[] = _("item"); +const u8 Str_842E2AA[] = _("goods"); +const u8 Str_842E2B0[] = _("potion"); +const u8 Str_842E2B7[] = _("ball"); +const u8 Str_842E2BC[] = _("cheri berry"); +const u8 Str_842E2C8[] = _("TM01"); + +const struct { + const u8 * name; + size_t (*func)(u8 * dest); +} gUnknown_Debug_842E2D0[] = { + {Str_842E264, debug_sub_813C404}, + {Str_842E26B, debug_sub_813C810}, + {Str_842E26E, debug_sub_813C888}, + {Str_842E277, debug_sub_813C430}, + {Str_842E27E, debug_sub_813C488}, + {Str_842E282, debug_sub_813C45C}, + {Str_842E28A, debug_sub_813C740}, + {Str_842E28E, debug_sub_813C5B4}, + {Str_842E297, debug_sub_813C93C}, + {Str_842E29F, debug_sub_813C4B4}, + {Str_842E2A5, debug_sub_813C4D4}, + {Str_842E2AA, debug_sub_813C500}, + {Str_842E2B0, debug_sub_813C580}, + {Str_842E2B7, debug_sub_813C58C}, + {Str_842E2BC, debug_sub_813C598}, + {Str_842E2C8, debug_sub_813C5A4} +}; + +extern u8 gUnknown_Debug_845E306[]; + +const struct { + u8 unk0; + u8 *scripts[10]; +} gUnknown_Debug_842E350 = { + 0x10, { + gUnknown_Debug_845DAE1, + gUnknown_Debug_845DDB2, + gUnknown_Debug_845E306, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E402, + gUnknown_Debug_845E402, + gUnknown_Debug_845E422, + gUnknown_Debug_845E422, + gUnknown_Debug_845E443 + } +}; + #endif // DEBUG -- cgit v1.2.3 From 030ce70f350ec85e22c067659cd05d521a779ce2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 14:35:13 -0400 Subject: Correct some data misclassification and link relevant objects to mystery_event_menu --- include/debug.h | 9 +++++++++ src/debug/unk_debug_menu_3.c | 34 ++++++++++++++-------------------- src/mystery_event_menu.c | 3 +-- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/include/debug.h b/include/debug.h index 469560b9e..43db92c2b 100644 --- a/include/debug.h +++ b/include/debug.h @@ -1,6 +1,11 @@ #ifndef GUARD_DEBUG_H #define GUARD_DEBUG_H +struct UnkDebugMenu3Items { + const u8 * text; + size_t (*func)(u8 * dest); +}; + // start_menu_debug void DebugMenu_8077048(void); @@ -17,4 +22,8 @@ void CB2_StartSoundCheckMenu(void); // nakamura_debug_menu void NakaGenderTest(void); +// unk debug menu 3 +extern const u8 gUnknown_Debug_842E350; +extern const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[]; + #endif // GUARD_DEBUG_H diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index f9ae9b4b5..138b99104 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -323,10 +323,7 @@ const u8 Str_842E2B7[] = _("ball"); const u8 Str_842E2BC[] = _("cheri berry"); const u8 Str_842E2C8[] = _("TM01"); -const struct { - const u8 * name; - size_t (*func)(u8 * dest); -} gUnknown_Debug_842E2D0[] = { +const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { {Str_842E264, debug_sub_813C404}, {Str_842E26B, debug_sub_813C810}, {Str_842E26E, debug_sub_813C888}, @@ -347,22 +344,19 @@ const struct { extern u8 gUnknown_Debug_845E306[]; -const struct { - u8 unk0; - u8 *scripts[10]; -} gUnknown_Debug_842E350 = { - 0x10, { - gUnknown_Debug_845DAE1, - gUnknown_Debug_845DDB2, - gUnknown_Debug_845E306, - gUnknown_Debug_845E3E0, - gUnknown_Debug_845E3E0, - gUnknown_Debug_845E402, - gUnknown_Debug_845E402, - gUnknown_Debug_845E422, - gUnknown_Debug_845E422, - gUnknown_Debug_845E443 - } +const u8 gUnknown_Debug_842E350 = 16; + +u8 *const gUnknown_Debug_842E354[] = { + gUnknown_Debug_845DAE1, + gUnknown_Debug_845DDB2, + gUnknown_Debug_845E306, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E402, + gUnknown_Debug_845E402, + gUnknown_Debug_845E422, + gUnknown_Debug_845E422, + gUnknown_Debug_845E443 }; #endif // DEBUG diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 56801ff53..1ea177f2e 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -15,6 +15,7 @@ #include "text.h" #include "title_screen.h" #include "ewram.h" +#include "debug.h" static EWRAM_DATA u8 gUnknown_02039338 = 0; @@ -347,8 +348,6 @@ static const u8 Str_843DA84[] = _("LR: select A: send。"); static const u8 Str_843DA98[] = _("sending。。。"); static const u8 Str_843DAA3[] = _("completed。"); -extern const struct {const u8 *text; void (*func)();} gUnknown_Debug_842E2D0[]; -extern const u8 gUnknown_Debug_842E350; void debug_sub_815D1D8(); -- cgit v1.2.3 From 2c18a6395c59d134d47b8e43407cbffd2f3c6a0e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 14:45:00 -0400 Subject: Fix nonmatching --- src/save.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/save.c b/src/save.c index 0b7a3dd79..0df83200a 100644 --- a/src/save.c +++ b/src/save.c @@ -927,3 +927,6 @@ u8 unref_sub_8126080(u8 sector, u8 *data) ReadFlash(sector, 0, data, sizeof(struct SaveSector)); return 1; } + +asm(".section .rodata\n" + "\t.align 2"); -- cgit v1.2.3 From e145153bd895365652dac6cfffc38e383acd10cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 19:13:12 -0400 Subject: Actually decompile start_menu_debug through DebugMenu_8076EF4 --- include/menu.h | 2 +- include/save.h | 1 + src/debug/start_menu_debug.c | 241 ++++++++++--------------------------------- src/menu.c | 4 +- 4 files changed, 60 insertions(+), 188 deletions(-) diff --git a/include/menu.h b/include/menu.h index 523037839..93394ecb2 100644 --- a/include/menu.h +++ b/include/menu.h @@ -59,7 +59,7 @@ s8 Menu_ProcessInputNoWrap(void); void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 Menu_ProcessInputGridLayout(void); u8 Menu_GetColumnXCoord(u8); -void Menu_PrintItems(u8, u8, u8, const struct MenuAction[]); +void Menu_PrintItems(u8, u8, u8, const void *); void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); diff --git a/include/save.h b/include/save.h index 13e07d06a..371bf2c85 100644 --- a/include/save.h +++ b/include/save.h @@ -34,5 +34,6 @@ u8 sub_8125E04(void); u8 sub_8125E2C(void); bool8 sub_8125E6C(void); u8 Save_LoadGameData(u8 a1); +void sub_813B79C(void); #endif // GUARD_SAVE_H diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 340ef2f17..9c88b30b9 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -485,201 +485,72 @@ void DebugMenu_8076D6C(u8 taskId) } } -__attribute__((naked)) -u8 DebugMenu_8076E18() +u8 DebugMenu_8076E18(void) { - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._67 @ DebugMenu_8076D6C\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._68:\n" - " .align 2, 0\n" - "._67:\n" - " .word DebugMenu_8076D6C+1\n" - "\n" - ); + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076D6C, 10); + return 0; } -__attribute__((naked)) -void DebugMenu_8076E30() +void DebugMenu_8076E30(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " lsl r0, r3, #0x2\n" - " add r0, r0, r3\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._73 @ gTasks\n" - " add r4, r0, r1\n" - " mov r0, #0x0\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._69 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._70 @cond_branch\n" - " cmp r1, #0\n" - " beq ._71 @cond_branch\n" - " b ._86\n" - "._74:\n" - " .align 2, 0\n" - "._73:\n" - " .word gTasks+0x8\n" - "._70:\n" - " cmp r1, #0x2\n" - " beq ._75 @cond_branch\n" - " b ._86\n" - "._71:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._78 @ Str_839BD5A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " b ._77\n" - "._79:\n" - " .align 2, 0\n" - "._78:\n" - " .word Str_839BD5A\n" - "._69:\n" - " ldr r0, ._82 @ gMain\n" - " ldrh r2, [r0, #0x2e]\n" - " and r1, r1, r2\n" - " cmp r1, #0\n" - " beq ._80 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " bl sub_813B79C\n" - " ldr r0, ._82 + 4 @ Str_839BD7D\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - "._77:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._86\n" - "._83:\n" - " .align 2, 0\n" - "._82:\n" - " .word gMain\n" - " .word Str_839BD7D\n" - "._80:\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - " b ._86\n" - "._75:\n" - " ldr r0, ._87 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._86 @cond_branch\n" - " add r0, r3, #0\n" - " bl DestroyTask\n" - " bl DoSoftReset\n" - "._86:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._88:\n" - " .align 2, 0\n" - "._87:\n" - " .word gMain\n" - "\n" - ); + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839BD5A, 2, 15); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + sub_813B79C(); + Menu_PrintText(Str_839BD7D, 2, 15); + PlaySE(SE_PINPON); + data[0]++; + } + else if (gMain.newKeys & B_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + DestroyTask(taskId); + DoSoftReset(); // noreturn + } + break; + } } -__attribute__((naked)) -u8 DebugMenu_8076EDC() +u8 DebugMenu_8076EDC(void) { - asm( - " push {lr}\n" - " bl debug_sub_8076B4C\n" - " ldr r0, ._89 @ DebugMenu_8076E30\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._90:\n" - " .align 2, 0\n" - "._89:\n" - " .word DebugMenu_8076E30+1\n" - "\n" - ); + debug_sub_8076B4C(); + CreateTask(DebugMenu_8076E30, 10); + return 0; } -__attribute__((naked)) -void DebugMenu_8076EF4() +extern const struct { + const u8 * text; + u32 flags; +} gUnknown_Debug_839BDC4[8]; + +void DebugMenu_8076EF4(void) { - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xb\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n" - " mov r0, #0x2\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " add r3, r4, #0\n" - " bl Menu_PrintItems\n" - " mov r5, #0x0\n" - " add r4, r4, #0x4\n" - "._92:\n" - " lsl r0, r5, #0x3\n" - " add r0, r0, r4\n" - " ldr r1, [r0]\n" - " mov r0, #0x1\n" - " and r1, r1, r0\n" - " mov r0, #0xb6\n" - " cmp r1, #0\n" - " bne ._91 @cond_branch\n" - " mov r0, #0xb5\n" - "._91:\n" - " lsl r2, r5, #0x1\n" - " add r2, r2, #0x1\n" - " lsl r2, r2, #0x18\n" - " lsr r2, r2, #0x18\n" - " mov r1, #0xa\n" - " bl sub_8071F60\n" - " add r0, r5, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " cmp r5, #0x7\n" - " bls ._92 @cond_branch\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x9\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._94:\n" - " .align 2, 0\n" - "._93:\n" - " .word gUnknown_Debug_839BDC4\n" - "\n" - ); + u8 i; + + Menu_DrawStdWindowFrame(0, 0, 11, 17); + Menu_PrintItems(2, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), gUnknown_Debug_839BDC4); + for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_839BDC4); i++) + { + sub_8071F60((gUnknown_Debug_839BDC4[i].flags & 1) == MALE ? CHAR_MALE : CHAR_FEMALE, 10, 2 * i + 1); + } + InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); } __attribute__((naked)) diff --git a/src/menu.c b/src/menu.c index 86e20d0eb..677a0e4bd 100644 --- a/src/menu.c +++ b/src/menu.c @@ -581,12 +581,12 @@ u8 Menu_GetColumnXCoord(u8 column) return gMenu.columnXCoords[column]; } -void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[]) +void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const void * menuItems) { u8 i; for (i = 0; i < menuItemCount; i++) - Menu_PrintText(menuItems[i].text, left, top + 2 * i); + Menu_PrintText(((const struct MenuAction *)menuItems)[i].text, left, top + 2 * i); } void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) -- cgit v1.2.3 From 0db42079be4911ab63aab0396cf1429db089cd55 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 19:36:19 -0400 Subject: start_menu_debug thru DebugMenu_807709C --- include/new_game.h | 1 + include/overworld.h | 1 + src/debug/start_menu_debug.c | 398 +++++++++++-------------------------------- 3 files changed, 98 insertions(+), 302 deletions(-) diff --git a/include/new_game.h b/include/new_game.h index c90606b5a..e50fc2c80 100644 --- a/include/new_game.h +++ b/include/new_game.h @@ -14,5 +14,6 @@ void WarpToTruck(void); void ClearSav2(void); void sub_8052E4C(void); void NewGameInitData(void); +void debug_sub_8057508(bool32 arg0); #endif // GUARD_NEW_GAME_H diff --git a/include/overworld.h b/include/overworld.h index b18027933..f9446c789 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -238,5 +238,6 @@ void SpriteCB_LinkPlayer(struct Sprite *); void sub_805465C(void); void CB2_InitTestMenu(void); +void debug_sub_8058C00(void); #endif // GUARD_ROM4_H diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 9c88b30b9..57f203b28 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -16,12 +16,21 @@ #include "task.h" #include "text.h" #include "trade.h" +#include "start_menu.h" +#include "string_util.h" +#include "new_game.h" +#include "script.h" // berry_blender.c extern void unref_sub_80524BC(void); void debug_sub_8076BB4(u8); void debug_sub_8077CF4(); +u8 DebugMenu_807706C(void); +u8 DebugMenu_807709C(void); +void DebugMenu_807719C(void); +void DebugMenu_80771EC(void); +void DebugMenu_8077238(void); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -553,329 +562,114 @@ void DebugMenu_8076EF4(void) InitMenu(0, 1, 1, ARRAY_COUNT(gUnknown_Debug_839BDC4), 0, 9); } -__attribute__((naked)) -void DebugMenu_8076F60() +void DebugMenu_8076F60(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " bl Menu_ProcessInput\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r2, r0, #0x18\n" - " lsl r4, r4, #0x18\n" - " asr r4, r4, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._97 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " bne ._96 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl debug_sub_8076B68\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " b ._97\n" - "._96:\n" - " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n" - " lsl r2, r2, #0x18\n" - " asr r2, r2, #0x15\n" - " add r0, r3, #4\n" - " add r0, r2, r0\n" - " ldrb r4, [r0]\n" - " ldr r0, ._100 + 4 @ gSaveBlock2\n" - " mov r1, #0x1\n" - " and r1, r1, r4\n" - " strb r1, [r0, #0x8]\n" - " add r2, r2, r3\n" - " ldr r1, [r2]\n" - " bl StringCopy\n" - " mov r0, #0x80\n" - " and r4, r4, r0\n" - " cmp r4, #0\n" - " bne ._98 @cond_branch\n" - " mov r0, #0x0\n" - " bl debug_sub_8057508\n" - " b ._99\n" - "._101:\n" - " .align 2, 0\n" - "._100:\n" - " .word gUnknown_Debug_839BDC4\n" - " .word gSaveBlock2\n" - "._98:\n" - " mov r0, #0x1\n" - " bl debug_sub_8057508\n" - "._99:\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " ldr r0, ._102 @ debug_sub_8058C00\n" - " bl SetMainCallback2\n" - "._97:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._103:\n" - " .align 2, 0\n" - "._102:\n" - " .word debug_sub_8058C00+1\n" - "\n" - ); + s8 input = Menu_ProcessInput(); + s8 cursorPos = Menu_GetCursorPos(); + + switch (input) + { + case -2: + break; + case -1: + Menu_EraseScreen(); + debug_sub_8076B68(); + DestroyTask(taskId); + break; + default: + { + u8 flags = gUnknown_Debug_839BDC4[cursorPos].flags; + gSaveBlock2.playerGender = flags & 1; + StringCopy(gSaveBlock2.playerName, gUnknown_Debug_839BDC4[cursorPos].text); + if ((flags & 0x80) == 0) + debug_sub_8057508(FALSE); + else + debug_sub_8057508(TRUE); + DestroyTask(taskId); + SetMainCallback2(debug_sub_8058C00); + break; + } + } } -__attribute__((naked)) -void DebugMenu_8076FEC() +void DebugMenu_8076FEC(void) { - asm( - " push {lr}\n" - " bl DebugMenu_8076EF4\n" - " ldr r0, ._104 @ DebugMenu_8076F60\n" - " mov r1, #0xa\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._105:\n" - " .align 2, 0\n" - "._104:\n" - " .word DebugMenu_8076F60+1\n" - "\n" - ); + DebugMenu_8076EF4(); + CreateTask(DebugMenu_8076F60, 10); } -__attribute__((naked)) void DebugMenu_8077004() { - asm( - " ldr r2, ._106 @ gUnknown_030006C4\n" - " ldr r0, ._106 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n" - " add r0, r0, r1\n" - " str r0, [r2]\n" - " bx lr\n" - "._107:\n" - " .align 2, 0\n" - "._106:\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C1 \n" - " .word gUnknown_Debug_839BB64\n" - "\n" - ); + gUnknown_030006C4 = gUnknown_Debug_839BB64 + gUnknown_030006C1 * 8; } -__attribute__((naked)) -void DebugMenu_8077020() +void DebugMenu_8077020(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._109 @ gMenuCallback\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._108 @cond_branch\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - "._108:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._110:\n" - " .align 2, 0\n" - "._109:\n" - " .word gMenuCallback\n" - "\n" - ); + if (gMenuCallback() == TRUE) + DestroyTask(taskId); } -__attribute__((naked)) void DebugMenu_8077048() { - asm( - " push {lr}\n" - " ldr r0, ._111 @ gMenuCallback\n" - " ldr r1, ._111 + 4 @ DebugMenu_807706C\n" - " str r1, [r0]\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._111 + 8 @ DebugMenu_8077020\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " pop {r0}\n" - " bx r0\n" - "._112:\n" - " .align 2, 0\n" - "._111:\n" - " .word gMenuCallback\n" - " .word DebugMenu_807706C+1\n" - " .word DebugMenu_8077020+1\n" - "\n" - ); + gMenuCallback = DebugMenu_807706C; + ScriptContext2_Enable(); + CreateTask(DebugMenu_8077020, 80); } -__attribute__((naked)) -void DebugMenu_807706C() +u8 DebugMenu_807706C(void) { - asm( - " push {lr}\n" - " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n" - " bl InitMenuWindow\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - " bl DebugMenu_80771EC\n" - " bl DebugMenu_8077238\n" - " ldr r1, ._113 + 4 @ gMenuCallback\n" - " ldr r0, ._113 + 8 @ DebugMenu_807709C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._114:\n" - " .align 2, 0\n" - "._113:\n" - " .word gWindowTemplate_81E6CE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_807709C+1\n" - "\n" - ); + InitMenuWindow(&gWindowTemplate_81E6CE4); + DebugMenu_8077004(); + DebugMenu_807719C(); + DebugMenu_80771EC(); + DebugMenu_8077238(); + gMenuCallback = DebugMenu_807709C; + return FALSE; } -__attribute__((naked)) -void DebugMenu_807709C() +u8 DebugMenu_807709C(void) { - asm( - " push {r4, lr}\n" - " ldr r4, ._120 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._115 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._115:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._116 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._120 + 4 @ gUnknown_030006C0\n" - " strb r0, [r1]\n" - "._116:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._117 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._120 + 8 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " bne ._118 @cond_branch\n" - " mov r0, #0x7\n" - " b ._119\n" - "._121:\n" - " .align 2, 0\n" - "._120:\n" - " .word gMain\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C1 \n" - "._118:\n" - " sub r0, r0, #0x1\n" - "._119:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._117:\n" - " ldr r0, ._125 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._122 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._125 + 4 @ gUnknown_030006C1\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x7\n" - " bne ._123 @cond_branch\n" - " mov r0, #0x0\n" - " b ._124\n" - "._126:\n" - " .align 2, 0\n" - "._125:\n" - " .word gMain\n" - " .word gUnknown_030006C1 \n" - "._123:\n" - " add r0, r0, #0x1\n" - "._124:\n" - " strb r0, [r1]\n" - " bl DebugMenu_8077004\n" - " bl DebugMenu_807719C\n" - "._122:\n" - " ldr r0, ._129 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._127 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n" - " ldr r0, ._129 + 8 @ gUnknown_030006C0\n" - " ldrb r2, [r0]\n" - " ldr r0, ._129 + 12 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " add r0, r0, r2\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x3\n" - " add r1, r1, #0x4\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " bl _call_via_r0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " b ._132\n" - "._130:\n" - " .align 2, 0\n" - "._129:\n" - " .word gMain\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C0 \n" - " .word gUnknown_030006C4 \n" - "._127:\n" - " mov r0, #0xa\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._131 @cond_branch\n" - " mov r0, #0x0\n" - " b ._132\n" - "._131:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._132:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(-1); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_030006C0 = Menu_MoveCursor(+1); + } + if (gMain.newKeys & DPAD_LEFT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 0) + gUnknown_030006C1 = 7; + else + gUnknown_030006C1--; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & DPAD_RIGHT) + { + PlaySE(SE_SELECT); + if (gUnknown_030006C1 == 7) + gUnknown_030006C1 = 0; + else + gUnknown_030006C1++; + DebugMenu_8077004(); + DebugMenu_807719C(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + return gDebug0x839B9BC[gUnknown_030006C4[gUnknown_030006C0]].func(); + } + if (gMain.newKeys & (B_BUTTON | START_BUTTON)) + { + CloseMenu(); + return TRUE; + } + return FALSE; } __attribute__((naked)) -- cgit v1.2.3 From 26d0664302577a882f98fb3fcbd4cf15a99b9591 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 20:32:47 -0400 Subject: through DebugMenu_HoennNationalDex --- data/start_menu_debug.s | 68 ------- include/battle.h | 2 + include/debug.h | 14 ++ include/menu.h | 2 +- include/start_menu.h | 1 + src/debug/start_menu_debug.c | 464 +++++++++++-------------------------------- src/menu.c | 4 +- 7 files changed, 135 insertions(+), 420 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index dc722bf33..26a057b98 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,75 +6,7 @@ .section .rodata -Str_839BD90:: @ 0x839BD90 - .string "ジュンイチ$" - -Str_839BD96:: @ 0x839BD96 - .string "ダイゴロウ$" - -Str_839BD9C:: @ 0x839BD9C - .string "テツジ$" - -Str_839BDA0:: @ 0x839BDA0 - .string "バレンシア$" - -Str_839BDA6:: @ 0x839BDA6 - .string "ハルコマチ$" - -Str_839BDAC:: @ 0x839BDAC - .string "RAYMOND$" - -Str_839BDB4:: @ 0x839BDB4 - .string "TIFFANY$" - -Str_839BDBC:: @ 0x839BDBC - .string "くまxちえ$" - - .align 2 -gUnknown_Debug_839BDC4:: @ 0x839BDC4 - .4byte Str_839BD90, 0x0 - .4byte Str_839BD96, 0x0 - .4byte Str_839BDA0, 0x1 - .4byte Str_839BDA6, 0x1 - .4byte Str_839BDAC, 0x80 - .4byte Str_839BDB4, 0x81 - .4byte Str_839BD9C, 0x0 - .4byte Str_839BDBC, 0x1 - -Str_839BE04:: @ 0x839BE04 - .string "ID$" - -Str_839BE07:: @ 0x839BE07 - .string "X$" - -Str_839BE09:: @ 0x839BE09 - .string " Y$" - -Str_839BE0C:: @ 0x839BE0C - .string " H$" - -Str_839BE0F:: @ 0x839BE0F - .string "HP$" - -Str_839BE12:: @ 0x839BE12 - .string "PAR$" - -Str_839BE16:: @ 0x839BE16 - .string "SLP$" - -Str_839BE1A:: @ 0x839BE1A - .string "PSN$" - -Str_839BE1E:: @ 0x839BE1E - .string "ウマイ$" - .align 2 -gUnknown_Debug_839BE24:: @ 0x839BE24 - .4byte Str_839BE0F, DebugMenu_8077434+1 - .4byte Str_839BE12, DebugMenu_8077434+1 - .4byte Str_839BE16, DebugMenu_8077434+1 - .4byte Str_839BE1A, DebugMenu_8077434+1 - .4byte Str_839BE1E, DebugMenu_8077434+1 Str_839BE4C:: @ 0x839BE4C .string "OFF$" diff --git a/include/battle.h b/include/battle.h index af0b48013..02e02ca83 100644 --- a/include/battle.h +++ b/include/battle.h @@ -818,4 +818,6 @@ void BattleStopLowHpSound(void); void SetBankFuncToLinkOpponentBufferRunCommand(void); +void GameClear(void); + #endif // GUARD_BATTLE_H diff --git a/include/debug.h b/include/debug.h index 43db92c2b..85bd51bee 100644 --- a/include/debug.h +++ b/include/debug.h @@ -12,6 +12,7 @@ void DebugMenu_8077048(void); // matsuda_debug_menu void sub_80AAF30(void); void Crash(const u8 *text); +bool8 unref_sub_80A9B28(void); // tomomichi_debug_menu void debug_nullsub_66(void); @@ -26,4 +27,17 @@ void NakaGenderTest(void); extern const u8 gUnknown_Debug_842E350; extern const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[]; +// unknown debug menu +int unref_sub_814A414(void); + +// kagaya_debug_menu +bool8 InitKagayaDebugMenu_A(void); + +// nohara_debug_menu +bool8 InitNoharaDebugMenu(void); + +// watanabe_debug_menu +void InitWatanabeDebugMenu(void); +void InitSizeComparison(void); + #endif // GUARD_DEBUG_H diff --git a/include/menu.h b/include/menu.h index 93394ecb2..8f7b91346 100644 --- a/include/menu.h +++ b/include/menu.h @@ -60,7 +60,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 Menu_ProcessInputGridLayout(void); u8 Menu_GetColumnXCoord(u8); void Menu_PrintItems(u8, u8, u8, const void *); -void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order); +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const void * menuItems, const u8 *order); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 Menu_ProcessInputNoWrap_(void); diff --git a/include/start_menu.h b/include/start_menu.h index 87f6828ab..ee76e9863 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -10,5 +10,6 @@ void sub_8071310(void); void ScrSpecial_DoSaveDialog(void); void sub_8071B28(void); void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId); +bool8 debug_sub_8075C30(void); #endif // GUARD_STARTER_CHOOSE_H diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 57f203b28..e08affd82 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -20,6 +20,10 @@ #include "string_util.h" #include "new_game.h" #include "script.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "credits.h" +#include "event_data.h" // berry_blender.c extern void unref_sub_80524BC(void); @@ -544,10 +548,28 @@ u8 DebugMenu_8076EDC(void) return 0; } -extern const struct { +const u8 Str_839BD90[] = _("ジュンイチ"); +const u8 Str_839BD96[] = _("ダイゴロウ"); +const u8 Str_839BD9C[] = _("テツジ"); +const u8 Str_839BDA0[] = _("バレンシア"); +const u8 Str_839BDA6[] = _("ハルコマチ"); +const u8 Str_839BDAC[] = _("RAYMOND"); +const u8 Str_839BDB4[] = _("TIFFANY"); +const u8 Str_839BDBC[] = _("くまxちえ"); + +const struct { const u8 * text; u32 flags; -} gUnknown_Debug_839BDC4[8]; +} gUnknown_Debug_839BDC4[] = { + {Str_839BD90, 0x0}, + {Str_839BD96, 0x0}, + {Str_839BDA0, 0x1}, + {Str_839BDA6, 0x1}, + {Str_839BDAC, 0x80}, + {Str_839BDB4, 0x81}, + {Str_839BD9C, 0x0}, + {Str_839BDBC, 0x1} +}; void DebugMenu_8076EF4(void) { @@ -598,7 +620,7 @@ void DebugMenu_8076FEC(void) CreateTask(DebugMenu_8076F60, 10); } -void DebugMenu_8077004() +void DebugMenu_8077004(void) { gUnknown_030006C4 = gUnknown_Debug_839BB64 + gUnknown_030006C1 * 8; } @@ -609,7 +631,7 @@ void DebugMenu_8077020(u8 taskId) DestroyTask(taskId); } -void DebugMenu_8077048() +void DebugMenu_8077048(void) { gMenuCallback = DebugMenu_807706C; ScriptContext2_Enable(); @@ -672,400 +694,130 @@ u8 DebugMenu_807709C(void) return FALSE; } -__attribute__((naked)) -void DebugMenu_807719C() +void DebugMenu_807719C(void) { - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0xe\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r3, ._133 @ gDebug0x839B9BC\n" - " ldr r0, ._133 + 4 @ gUnknown_030006C4\n" - " ldr r0, [r0]\n" - " str r0, [sp]\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " mov r2, #0x8\n" - " bl Menu_PrintItemsReordered\n" - " ldr r4, ._133 + 8 @ gUnknown_030006C0\n" - " ldrb r0, [r4]\n" - " str r0, [sp]\n" - " mov r0, #0xd\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " mov r3, #0x8\n" - " bl InitMenu\n" - " strb r0, [r4]\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._134:\n" - " .align 2, 0\n" - "._133:\n" - " .word gDebug0x839B9BC\n" - " .word gUnknown_030006C4 \n" - " .word gUnknown_030006C0 \n" - "\n" - ); + Menu_DrawStdWindowFrame(0, 0, 14, 17); + Menu_PrintItemsReordered(1, 1, 8, gDebug0x839B9BC, gUnknown_030006C4); + gUnknown_030006C0 = InitMenu(0, 1, 1, 8, gUnknown_030006C0, 13); } -__attribute__((naked)) -void DebugMenu_80771EC() +const u8 Str_839BE04[] = _("ID"); + +void DebugMenu_80771EC(void) { - asm( - " push {r4, lr}\n" - " ldr r0, ._135 @ gStringVar4\n" - " ldr r1, ._135 + 4 @ Str_839BE04\n" - " bl StringCopy\n" - " ldr r4, ._135 + 8 @ gSaveBlock1\n" - " mov r1, #0x4\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r1, #0x5\n" - " ldsb r1, [r4, r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, #0x13\n" - " mov r1, #0xc\n" - " mov r2, #0x1d\n" - " mov r3, #0xf\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._135 @ gStringVar4\n" - " mov r1, #0x14\n" - " mov r2, #0xd\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._136:\n" - " .align 2, 0\n" - "._135:\n" - " .word gStringVar4\n" - " .word Str_839BE04\n" - " .word gSaveBlock1\n" - "\n" - ); + u8 * buf = gStringVar4; + buf = StringCopy(buf, Str_839BE04); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapGroup, STR_CONV_MODE_RIGHT_ALIGN, 3); + buf = ConvertIntToDecimalStringN(buf, gSaveBlock1.location.mapNum, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_DrawStdWindowFrame(19, 12, 29, 15); + Menu_PrintText(gStringVar4, 20, 13); } -__attribute__((naked)) -void DebugMenu_8077238() +void DebugMenu_8077238(void) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xffffffe8\n" - " ldr r1, ._139 @ Str_839BE07\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " bl memcpy\n" - " add r0, sp, #0x4\n" - " mov r9, r0\n" - " ldr r1, ._139 + 4 @ Str_839BE09\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " add r1, sp, #0x8\n" - " mov sl, r1\n" - " ldr r1, ._139 + 8 @ Str_839BE0C\n" - " mov r0, sl\n" - " mov r2, #0x3\n" - " bl memcpy\n" - " mov r2, #0x0\n" - " str r2, [sp, #0x14]\n" - " add r4, sp, #0x10\n" - " mov r6, sp\n" - " add r6, r6, #0x12\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl PlayerGetDestCoords\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r6, r2]\n" - " bl MapGridGetZCoordAt\n" - " mov r8, r0\n" - " mov r0, r8\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r4]\n" - " ldrh r0, [r6]\n" - " sub r0, r0, #0x7\n" - " strh r0, [r6]\n" - " ldr r7, ._139 + 12 @ gStringVar4\n" - " add r0, r7, #0\n" - " mov r1, sp\n" - " bl StringCopy\n" - " add r5, sp, #0xc\n" - " mov r2, #0x0\n" - " ldsh r1, [r4, r2]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, r9\n" - " bl StringAppend\n" - " mov r0, #0x0\n" - " ldsh r1, [r6, r0]\n" - " add r0, r5, #0\n" - " mov r2, #0x0\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " add r0, r7, #0\n" - " mov r1, sl\n" - " bl StringAppend\n" - " add r0, r5, #0\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " bl StringAppend\n" - " ldrb r0, [r7]\n" - " cmp r0, #0xff\n" - " beq ._137 @cond_branch\n" - " add r1, r7, #0\n" - "._138:\n" - " ldr r0, [sp, #0x14]\n" - " add r0, r0, #0x1\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " str r0, [sp, #0x14]\n" - " add r0, r0, r1\n" - " ldrb r0, [r0]\n" - " cmp r0, #0xff\n" - " bne ._138 @cond_branch\n" - "._137:\n" - " mov r0, #0x1c\n" - " ldr r1, [sp, #0x14]\n" - " sub r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x10\n" - " mov r2, #0x1d\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._139 + 12 @ gStringVar4\n" - " mov r1, #0x1d\n" - " ldr r2, [sp, #0x14]\n" - " sub r1, r1, r2\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x18\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._140:\n" - " .align 2, 0\n" - "._139:\n" - " .word Str_839BE07\n" - " .word Str_839BE09\n" - " .word Str_839BE0C\n" - " .word gStringVar4\n" - "\n" - ); + u8 sp00[] = _("X"); + u8 sp04[] = _(" Y"); + u8 sp08[] = _(" H"); + u8 sp0c[4]; + + s16 x; + s16 y; + u8 z; + u16 sp14 = 0; + + PlayerGetDestCoords(&x, &y); + z = MapGridGetZCoordAt(x, y); + x -= 7; + y -= 7; + + StringCopy(gStringVar4, sp00); + ConvertIntToDecimalStringN(sp0c, x, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp04); + ConvertIntToDecimalStringN(sp0c, y, STR_CONV_MODE_LEFT_ALIGN, 3); + StringAppend(gStringVar4, sp0c); + StringAppend(gStringVar4, sp08); + ConvertIntToDecimalStringN(sp0c, z, STR_CONV_MODE_LEFT_ALIGN, 2); + StringAppend(gStringVar4, sp0c); + + for (sp14 = 0; gStringVar4[sp14] != EOS; sp14++) + ; + + Menu_DrawStdWindowFrame(28 - sp14, 16, 29, 19); + Menu_PrintText(gStringVar4, 29 - sp14, 17); } -__attribute__((naked)) -u8 DebugMenu_Exit() +u8 DebugMenu_Exit(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_OpenSogabe() +u8 DebugMenu_OpenSogabe(void) { - asm( - " push {lr}\n" - " bl unref_sub_814A414\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return unref_sub_814A414(); } -__attribute__((naked)) u8 DebugMenu_OpenTamada() { - asm( - " push {lr}\n" - " bl debug_sub_8075C30\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return debug_sub_8075C30(); } -__attribute__((naked)) u8 DebugMenu_OpenKagaya() { - asm( - " push {lr}\n" - " bl InitKagayaDebugMenu_A\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return InitKagayaDebugMenu_A(); } -__attribute__((naked)) u8 DebugMenu_OpenMatsuda() { - asm( - " push {lr}\n" - " bl unref_sub_80A9B28\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return unref_sub_80A9B28(); } -__attribute__((naked)) u8 DebugMenu_OpenNohara() { - asm( - " push {lr}\n" - " bl InitNoharaDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return InitNoharaDebugMenu(); } -__attribute__((naked)) u8 DebugMenu_OpenWatanabe() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._141 @ InitWatanabeDebugMenu\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._142:\n" - " .align 2, 0\n" - "._141:\n" - " .word InitWatanabeDebugMenu+1\n" - "\n" - ); + CloseMenu(); + SetMainCallback2(InitWatanabeDebugMenu); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) u8 DebugMenu_EndSequenceDemo() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._143 @ sub_81439D0\n" - " bl SetMainCallback2\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._144:\n" - " .align 2, 0\n" - "._143:\n" - " .word sub_81439D0+1\n" - "\n" - ); + CloseMenu(); + SetMainCallback2(sub_81439D0); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) u8 DebugMenu_HallOfFame() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl GameClear\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + GameClear(); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) u8 DebugMenu_OpenSizeComparison() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSizeComparison\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + InitSizeComparison(); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) u8 DebugMenu_HoennNationalDex() { - asm( - " push {lr}\n" - " bl IsNationalPokedexEnabled\n" - " cmp r0, #0\n" - " beq ._145 @cond_branch\n" - " bl DisableNationalPokedex\n" - " b ._146\n" - "._145:\n" - " bl EnableNationalPokedex\n" - "._146:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (IsNationalPokedexEnabled()) + DisableNationalPokedex(); + else + EnableNationalPokedex(); + CloseMenu(); + return TRUE; } __attribute__((naked)) @@ -1186,6 +938,20 @@ u8 DebugMenu_8077434() ); } +const u8 Str_839BE0F[] = _("HP"); +const u8 Str_839BE12[] = _("PAR"); +const u8 Str_839BE16[] = _("SLP"); +const u8 Str_839BE1A[] = _("PSN"); +const u8 Str_839BE1E[] = _("ウマイ"); + +const struct MenuAction gUnknown_Debug_839BE24[] = { + {Str_839BE0F, DebugMenu_8077434}, + {Str_839BE12, DebugMenu_8077434}, + {Str_839BE16, DebugMenu_8077434}, + {Str_839BE1A, DebugMenu_8077434}, + {Str_839BE1E, DebugMenu_8077434} +}; + __attribute__((naked)) u8 DebugMenu_807750C() { diff --git a/src/menu.c b/src/menu.c index 677a0e4bd..0e615a6d2 100644 --- a/src/menu.c +++ b/src/menu.c @@ -589,12 +589,12 @@ void Menu_PrintItems(u8 left, u8 top, u8 menuItemCount, const void * menuItems) Menu_PrintText(((const struct MenuAction *)menuItems)[i].text, left, top + 2 * i); } -void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order) +void Menu_PrintItemsReordered(u8 left, u8 top, u8 menuItemCount, const void * menuItems, const u8 *order) { u8 i; for (i = 0; i < menuItemCount; i++) - Menu_PrintText(menuItems[order[i]].text, left, top + 2 * i); + Menu_PrintText(((const struct MenuAction *)menuItems)[order[i]].text, left, top + 2 * i); } void InitYesNoMenu(u8 left, u8 top, u8 a3) -- cgit v1.2.3 From 978bdaaa050420289374ddc23aa0017df06e4000 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 22:03:22 -0400 Subject: through DebugMenu_EditPKMN --- include/berry.h | 1 + include/cable_club.h | 1 + include/debug.h | 11 + include/pokedex.h | 2 + include/sound.h | 2 + src/debug/start_menu_debug.c | 520 +++++++++++-------------------------------- 6 files changed, 141 insertions(+), 396 deletions(-) diff --git a/include/berry.h b/include/berry.h index 7c8f5e5fd..bb5762e28 100644 --- a/include/berry.h +++ b/include/berry.h @@ -47,5 +47,6 @@ void FieldObjectInteractionPickBerryTree(void); void FieldObjectInteractionRemoveBerryTree(void); bool8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); +void debug_sub_80C2D24(u8 spicy, u8 dry, u8 sweet, u8 bitter, u8 sour, u8 smoothness); #endif // GUARD_BERRY_H diff --git a/include/cable_club.h b/include/cable_club.h index 2f509c9fc..2fd447691 100644 --- a/include/cable_club.h +++ b/include/cable_club.h @@ -22,6 +22,7 @@ bool32 sub_8083BF4(u8 linkPlayerIndex); void sub_8083C50(u8 taskId); #if DEBUG void debug_sub_808B838(u8); +bool8 debug_sub_8138CC4(void); #endif #endif // GUARD_CABLE_CLUB_H diff --git a/include/debug.h b/include/debug.h index 85bd51bee..d6bd363bf 100644 --- a/include/debug.h +++ b/include/debug.h @@ -16,6 +16,7 @@ bool8 unref_sub_80A9B28(void); // tomomichi_debug_menu void debug_nullsub_66(void); +bool8 InitTomomichiDebugWindow(void); // sound_check_menu void CB2_StartSoundCheckMenu(void); @@ -39,5 +40,15 @@ bool8 InitNoharaDebugMenu(void); // watanabe_debug_menu void InitWatanabeDebugMenu(void); void InitSizeComparison(void); +void InitBattleForDebug(void); +void InitCreatePokemon(void); +void InitSeePokemonGraphics(void); +void InitSeeTrainers(void); + +// taya_debug_menu +bool8 InitTayaDebugWindow(void); + +// nakamura_debug_menu +bool8 InitNakamuraDebugMenu(void); #endif // GUARD_DEBUG_H diff --git a/include/pokedex.h b/include/pokedex.h index 73877bead..9158a97f0 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -25,4 +25,6 @@ u16 GetHoennPokedexCount(u8); bool8 CompletedHoennPokedex(void); bool16 CompletedNationalPokedex(void); +extern bool8 gUnknown_03005CE8; + #endif // GUARD_POKEDEX_H diff --git a/include/sound.h b/include/sound.h index 283b2b1f9..d883fd9c7 100644 --- a/include/sound.h +++ b/include/sound.h @@ -1,6 +1,8 @@ #ifndef GUARD_SOUND_H #define GUARD_SOUND_H +extern bool8 gDisableMusic; + void InitMapMusic(void); void MapMusicMain(void); void ResetMapMusic(void); diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index e08affd82..efabbe30e 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -24,6 +24,11 @@ #include "field_player_avatar.h" #include "credits.h" #include "event_data.h" +#include "berry.h" +#include "pokedex.h" +#include "mori_debug_menu.h" +#include "cable_club.h" +#include "field_fadetransition.h" // berry_blender.c extern void unref_sub_80524BC(void); @@ -35,6 +40,8 @@ u8 DebugMenu_807709C(void); void DebugMenu_807719C(void); void DebugMenu_80771EC(void); void DebugMenu_8077238(void); +u8 DebugMenu_8077D78(const struct MenuAction *menuActions); +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 a2); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -758,27 +765,27 @@ u8 DebugMenu_OpenSogabe(void) return unref_sub_814A414(); } -u8 DebugMenu_OpenTamada() +u8 DebugMenu_OpenTamada(void) { return debug_sub_8075C30(); } -u8 DebugMenu_OpenKagaya() +u8 DebugMenu_OpenKagaya(void) { return InitKagayaDebugMenu_A(); } -u8 DebugMenu_OpenMatsuda() +u8 DebugMenu_OpenMatsuda(void) { return unref_sub_80A9B28(); } -u8 DebugMenu_OpenNohara() +u8 DebugMenu_OpenNohara(void) { return InitNoharaDebugMenu(); } -u8 DebugMenu_OpenWatanabe() +u8 DebugMenu_OpenWatanabe(void) { CloseMenu(); SetMainCallback2(InitWatanabeDebugMenu); @@ -786,7 +793,7 @@ u8 DebugMenu_OpenWatanabe() return TRUE; } -u8 DebugMenu_EndSequenceDemo() +u8 DebugMenu_EndSequenceDemo(void) { CloseMenu(); SetMainCallback2(sub_81439D0); @@ -794,7 +801,7 @@ u8 DebugMenu_EndSequenceDemo() return TRUE; } -u8 DebugMenu_HallOfFame() +u8 DebugMenu_HallOfFame(void) { CloseMenu(); GameClear(); @@ -802,7 +809,7 @@ u8 DebugMenu_HallOfFame() return TRUE; } -u8 DebugMenu_OpenSizeComparison() +u8 DebugMenu_OpenSizeComparison(void) { CloseMenu(); InitSizeComparison(); @@ -810,7 +817,7 @@ u8 DebugMenu_OpenSizeComparison() return TRUE; } -u8 DebugMenu_HoennNationalDex() +u8 DebugMenu_HoennNationalDex(void) { if (IsNationalPokedexEnabled()) DisableNationalPokedex(); @@ -820,130 +827,41 @@ u8 DebugMenu_HoennNationalDex() return TRUE; } -__attribute__((naked)) -u8 DebugMenu_8077434() -{ - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x4\n" - " bhi ._165 @cond_branch\n" - " lsl r0, r0, #0x2\n" - " ldr r1, ._149 @ \n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " mov pc, r0\n" - "._150:\n" - " .align 2, 0\n" - "._149:\n" - " .word ._148\n" - "._148:\n" - " .word ._151\n" - " .word ._152\n" - " .word ._153\n" - " .word ._154\n" - " .word ._155\n" - "._151:\n" - " ldr r0, ._157 @ Str_839BE0F\n" - " mov r1, #0x1\n" - " mov r2, #0x4\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0x0\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._158:\n" - " .align 2, 0\n" - "._157:\n" - " .word Str_839BE0F\n" - "._152:\n" - " ldr r0, ._160 @ Str_839BE12\n" - " mov r1, #0x2\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0x0\n" - " b ._159\n" - "._161:\n" - " .align 2, 0\n" - "._160:\n" - " .word Str_839BE12\n" - "._153:\n" - " ldr r0, ._163 @ Str_839BE16\n" - " mov r1, #0x3\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0x0\n" - " b ._162\n" - "._164:\n" - " .align 2, 0\n" - "._163:\n" - " .word Str_839BE16\n" - "._154:\n" - " ldr r0, ._166 @ Str_839BE1A\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0xff\n" - "._162:\n" - " mov r2, #0xff\n" - "._159:\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - " b ._165\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word Str_839BE1A\n" - "._155:\n" - " ldr r0, ._168 @ Str_839BE1E\n" - " mov r1, #0x4\n" - " mov r2, #0x0\n" - " bl debug_sub_80C2C18\n" - " mov r0, #0xff\n" - " str r0, [sp]\n" - " str r0, [sp, #0x4]\n" - " mov r1, #0xff\n" - " mov r2, #0xff\n" - " mov r3, #0xff\n" - " bl debug_sub_80C2D24\n" - "._165:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._169:\n" - " .align 2, 0\n" - "._168:\n" - " .word Str_839BE1E\n" - "\n" - ); -} - const u8 Str_839BE0F[] = _("HP"); const u8 Str_839BE12[] = _("PAR"); const u8 Str_839BE16[] = _("SLP"); const u8 Str_839BE1A[] = _("PSN"); const u8 Str_839BE1E[] = _("ウマイ"); +u8 DebugMenu_8077434(void) +{ + switch (Menu_GetCursorPos()) + { + case 0: + debug_sub_80C2C18(Str_839BE0F, 1, 4); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0, 0xff, 0xff); + break; + case 1: + debug_sub_80C2C18(Str_839BE12, 2, 0); + debug_sub_80C2D24(0xff, 0xff, 0, 0xff, 0xff, 0xff); + break; + case 2: + debug_sub_80C2C18(Str_839BE16, 3, 0); + debug_sub_80C2D24(0xff, 0, 0xff, 0xff, 0xff, 0xff); + break; + case 3: + debug_sub_80C2C18(Str_839BE1A, 4, 0); + debug_sub_80C2D24(0, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + case 4: + debug_sub_80C2C18(Str_839BE1E, 4, 0); + debug_sub_80C2D24(0xff, 0xff, 0xff, 0xff, 0xff, 0xff); + break; + } + CloseMenu(); + return TRUE; +} + const struct MenuAction gUnknown_Debug_839BE24[] = { {Str_839BE0F, DebugMenu_8077434}, {Str_839BE12, DebugMenu_8077434}, @@ -952,321 +870,131 @@ const struct MenuAction gUnknown_Debug_839BE24[] = { {Str_839BE1E, DebugMenu_8077434} }; -__attribute__((naked)) -u8 DebugMenu_807750C() +u8 DebugMenu_807750C(void) { - asm( - " push {lr}\n" - " ldr r0, ._170 @ gUnknown_Debug_839BE24\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._171:\n" - " .align 2, 0\n" - "._170:\n" - " .word gUnknown_Debug_839BE24\n" - "\n" - ); + return DebugMenu_8077D78(gUnknown_Debug_839BE24); } -__attribute__((naked)) -u8 DebugMenu_SetRamBerry() +u8 DebugMenu_SetRamBerry(void) { - asm( - " push {lr}\n" - " ldr r0, ._172 @ gUnknown_Debug_839BE24\n" - " mov r1, #0xc\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._172 + 4 @ gMenuCallback\n" - " ldr r0, ._172 + 8 @ DebugMenu_807750C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._173:\n" - " .align 2, 0\n" - "._172:\n" - " .word gUnknown_Debug_839BE24\n" - " .word gMenuCallback\n" - " .word DebugMenu_807750C+1\n" - "\n" - ); + DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, 5); + gMenuCallback = DebugMenu_807750C; + return FALSE; } -__attribute__((naked)) -u8 DebugMenu_ToggleBGM() +u8 DebugMenu_ToggleBGM(void) { - asm( - " push {lr}\n" - " ldr r2, ._175 @ gDisableMusic\n" - " mov r1, #0x0\n" - " ldrb r0, [r2]\n" - " cmp r0, #0\n" - " bne ._174 @cond_branch\n" - " mov r1, #0x1\n" - "._174:\n" - " strb r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._176:\n" - " .align 2, 0\n" - "._175:\n" - " .word gDisableMusic\n" - "\n" - ); + gDisableMusic = gDisableMusic ? FALSE : TRUE; + CloseMenu(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_BattleForDebug() +u8 DebugMenu_BattleForDebug(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitBattleForDebug\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + InitBattleForDebug(); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_NationalDex() +u8 DebugMenu_NationalDex(void) { - asm( - " push {r4, r5, lr}\n" - " mov r4, #0x0\n" - " ldr r5, ._178 @ 0x181\n" - "._177:\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r4, r5\n" - " bls ._177 @cond_branch\n" - " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._179:\n" - " .align 2, 0\n" - "._178:\n" - " .word 0x181\n" - " .word gUnknown_03005CE8\n" - "\n" - ); + u16 i; + + for (i = 0; i < 386; i++) + { + GetSetPokedexFlag(i + 1, 2); + GetSetPokedexFlag(i + 1, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_HoennDex() +u8 DebugMenu_HoennDex(void) { - asm( - " push {r4, r5, lr}\n" - " mov r5, #0x0\n" - "._180:\n" - " add r5, r5, #0x1\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " add r0, r5, #0\n" - " bl HoennToNationalOrder\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " bl GetSetPokedexFlag\n" - " add r0, r4, #0\n" - " mov r1, #0x3\n" - " bl GetSetPokedexFlag\n" - " cmp r5, #0xc9\n" - " bls ._180 @cond_branch\n" - " ldr r1, ._181 @ gUnknown_03005CE8\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "._182:\n" - " .align 2, 0\n" - "._181:\n" - " .word gUnknown_03005CE8\n" - "\n" - ); + u16 i; + + for (i = 0; i < 202; i++) + { + u16 nati = HoennToNationalOrder(i + 1); + GetSetPokedexFlag(nati, 2); + GetSetPokedexFlag(nati, 3); + } + gUnknown_03005CE8 = TRUE; + CloseMenu(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_CreatePKMN() +u8 DebugMenu_CreatePKMN(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitCreatePokemon\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + InitCreatePokemon(); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_ViewPokemonGraphics() +u8 DebugMenu_ViewPokemonGraphics(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeePokemonGraphics\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + InitSeePokemonGraphics(); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_OpenSeeTrainers() +u8 DebugMenu_OpenSeeTrainers(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl InitSeeTrainers\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + InitSeeTrainers(); + ScriptContext2_Enable(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_OpenMori() +u8 DebugMenu_OpenMori(void) { - asm( - " push {lr}\n" - " bl InitMoriDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return InitMoriDebugMenu(); } -__attribute__((naked)) -u8 DebugMenu_OpenTomomichi() +u8 DebugMenu_OpenTomomichi(void) { - asm( - " push {lr}\n" - " bl InitTomomichiDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return InitTomomichiDebugWindow(); } -__attribute__((naked)) -u8 DebugMenu_OpenAoki() +u8 DebugMenu_OpenAoki(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_OpenTaya() +u8 DebugMenu_OpenTaya(void) { - asm( - " push {lr}\n" - " bl InitTayaDebugWindow\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return InitTayaDebugWindow(); } -__attribute__((naked)) -u8 DebugMenu_OpenNakamura() +u8 DebugMenu_OpenNakamura(void) { - asm( - " push {lr}\n" - " bl InitNakamuraDebugMenu\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return InitNakamuraDebugMenu(); } -__attribute__((naked)) -u8 DebugMenu_OpenIwasawa() +u8 DebugMenu_OpenIwasawa(void) { - asm( - " push {lr}\n" - " bl debug_sub_8138CC4\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + return debug_sub_8138CC4(); } -__attribute__((naked)) -u8 DebugMenu_Teleport() +u8 DebugMenu_Teleport(void) { - asm( - " push {lr}\n" - " bl Overworld_SetWarpDestToLastHealLoc\n" - " bl sub_8080E88\n" - " bl ScriptContext2_Enable\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + Overworld_SetWarpDestToLastHealLoc(); + sub_8080E88(); + ScriptContext2_Enable(); + CloseMenu(); + return TRUE; } -__attribute__((naked)) -u8 DebugMenu_EditPKMN() +u8 DebugMenu_EditPKMN(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl NakaGenderTest\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + Menu_EraseScreen(); + NakaGenderTest(); + return FALSE; } __attribute__((naked)) @@ -1822,7 +1550,7 @@ void DebugMenu_8077A40() } __attribute__((naked)) -void DebugMenu_8077A60() +u8 DebugMenu_8077A60() { asm( " push {lr}\n" @@ -2310,7 +2038,7 @@ void debug_sub_8077CF4() } __attribute__((naked)) -void DebugMenu_8077D24() +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 a2) { asm( " push {r4, r5, r6, lr}\n" @@ -2355,7 +2083,7 @@ void DebugMenu_8077D24() } __attribute__((naked)) -void DebugMenu_8077D78() +u8 DebugMenu_8077D78(const struct MenuAction *menuActions) { asm( " push {r4, r5, lr}\n" -- cgit v1.2.3 From 83bb25e7af1837d41177d84f1b03d83b42b9478c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 7 Apr 2018 22:49:37 -0400 Subject: through DebugMenu_807786C; use macro NAKED instead of __attribute__((naked)) --- data/start_menu_debug.s | 31 -- include/gba/defines.h | 2 + src/battle/anim/dark.c | 2 +- src/battle/anim/psychic.c | 2 +- src/battle/anim/shadow_minimize.c | 2 +- src/battle/anim/unused_9.c | 2 +- src/battle/anim/water.c | 2 +- src/battle/battle_2.c | 4 +- src/battle/battle_4.c | 30 +- src/battle/battle_ai.c | 2 +- src/battle/battle_ai_switch_items.c | 2 +- src/battle/battle_anim.c | 2 +- src/battle/battle_controller_opponent.c | 4 +- src/battle/battle_controller_player.c | 2 +- src/battle/battle_interface.c | 8 +- src/battle/contest_link_80C857C.c | 2 +- src/battle_tower.c | 4 +- src/contest.c | 2 +- src/contest_effect.c | 2 +- src/contest_painting.c | 6 +- src/daycare.c | 6 +- src/de_rom_8040FE0.c | 2 +- src/debug/nakamura_debug_menu.c | 2 +- src/debug/start_menu_debug.c | 547 ++++++++++---------------------- src/debug/tomomichi_debug_menu.c | 2 +- src/decoration.c | 6 +- src/easy_chat_2.c | 2 +- src/egg_hatch.c | 2 +- src/event_object_movement.c | 2 +- src/evolution_scene.c | 6 +- src/field_effect.c | 6 +- src/field_effect_helpers.c | 4 +- src/field_fadetransition.c | 2 +- src/field_specials.c | 4 +- src/field_tasks.c | 2 +- src/item.c | 2 +- src/item_menu.c | 6 +- src/item_use.c | 2 +- src/mauville_man.c | 2 +- src/menu.c | 2 +- src/menu_cursor.c | 4 +- src/money.c | 2 +- src/option_menu.c | 2 +- src/party_menu.c | 14 +- src/pokedex.c | 6 +- src/pokemon_storage_system.c | 2 +- src/pokemon_storage_system_2.c | 2 +- src/pokemon_storage_system_4.c | 8 +- src/pokemon_summary_screen.c | 22 +- src/pokenav_before.c | 10 +- src/record_mixing.c | 2 +- src/rotating_gate.c | 2 +- src/roulette.c | 2 +- src/script_menu.c | 2 +- src/secret_base.c | 2 +- src/shop.c | 4 +- src/starter_choose.c | 2 +- src/title_screen.c | 2 +- src/trade.c | 14 +- src/trainer_card.c | 4 +- src/tv.c | 2 +- src/unk_text_8095904.c | 2 +- src/use_pokeblock.c | 2 +- src/util.c | 2 +- 64 files changed, 306 insertions(+), 532 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index 26a057b98..f309fc740 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,37 +6,6 @@ .section .rodata - .align 2 - -Str_839BE4C:: @ 0x839BE4C - .string "OFF$" - -Str_839BE50:: @ 0x839BE50 - .string "ON$" - -Str_839BE53:: @ 0x839BE53 - .string "BG0\n" - .string "BG1\n" - .string "BG2\n" - .string "BG3\n" - .string "$" - -Str_839BE64:: @ 0x839BE64 - .string "ON$" - -Str_839BE67:: @ 0x839BE67 - .string "OFF$" - -Str_839BE6B:: @ 0x839BE6B - .string "さいせんかのうトレーナー:{STR_VAR_1}\n" - .string "さいせんじょうたいトレーナー:{STR_VAR_2}$" - -Str_839BE8D:: @ 0x839BE8D - .string "いる$" - -Str_839BE90:: @ 0x839BE90 - .string "いない$" - Str_839BE94:: @ 0x839BE94 .string "Max num of steps$" diff --git a/include/gba/defines.h b/include/gba/defines.h index 7fd429d9e..26e0c873f 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -8,6 +8,8 @@ #define IWRAM_DATA __attribute__((section("iwram_data"))) #define EWRAM_DATA __attribute__((section("ewram_data"))) +#define UNUSED __attribute__((unused)) +#define NAKED __attribute__((naked)) #define ALIGNED(n) __attribute__((aligned(n))) diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c index 9a1d0842b..55d500950 100644 --- a/src/battle/anim/dark.c +++ b/src/battle/anim/dark.c @@ -611,7 +611,7 @@ static void sub_80E0620(u8 taskId) // } // } -__attribute__((naked)) +NAKED static void sub_80E079C(struct Task *task) { asm(".syntax unified\n\ diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c index 4a48d1ecf..7babb3a19 100644 --- a/src/battle/anim/psychic.c +++ b/src/battle/anim/psychic.c @@ -690,7 +690,7 @@ void sub_80DC4F4(u8 taskId) task->func = sub_80DC5F4; } #else -__attribute__((naked)) +NAKED void sub_80DC4F4(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c index b4e18eb51..be033ae6d 100644 --- a/src/battle/anim/shadow_minimize.c +++ b/src/battle/anim/shadow_minimize.c @@ -129,7 +129,7 @@ void sub_80D0614(struct Task* task, u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_80D0614(struct Task* task, u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c index 6e0d0321b..8e3f0a8b7 100644 --- a/src/battle/anim/unused_9.c +++ b/src/battle/anim/unused_9.c @@ -45,7 +45,7 @@ void sub_80CFE2C(struct Sprite* sprite) } } #else -__attribute__((naked)) +NAKED void sub_80CFE2C(struct Sprite* sprite) { asm(".syntax unified\n\ diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c index 2700bfd27..a7e1883f3 100644 --- a/src/battle/anim/water.c +++ b/src/battle/anim/water.c @@ -51,7 +51,7 @@ static void sub_80D3874(struct Sprite *sprite) } } -__attribute__((naked)) +NAKED void sub_80D38BC(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c index 096bd878f..005dee32d 100644 --- a/src/battle/battle_2.c +++ b/src/battle/battle_2.c @@ -4470,7 +4470,7 @@ void sub_8012324(void) } } */ -__attribute__((naked)) +NAKED void sub_8012324(void) { asm(".syntax unified\n\ @@ -6839,7 +6839,7 @@ void HandleAction_UseItem(void) gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT; } #else -__attribute__((naked)) +NAKED void HandleAction_UseItem(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c index 8f5ea7cae..6646d6bae 100644 --- a/src/battle/battle_4.c +++ b/src/battle/battle_4.c @@ -2850,7 +2850,7 @@ void SetMoveEffect(bool8 primary, u8 certainArg) } } #else -__attribute__((naked)) +NAKED void SetMoveEffect(bool8 primary, u8 certainArg) { asm(".syntax unified\n\ @@ -5694,7 +5694,7 @@ static void atk24(void) } #else -__attribute__((naked)) +NAKED static void atk24(void) { asm(".syntax unified\n\ @@ -6484,7 +6484,7 @@ static void atk48_playstatchangeanimation(void) } #else -__attribute__((naked)) +NAKED static void atk48_playstatchangeanimation(void) { asm(".syntax unified\n\ @@ -6892,7 +6892,7 @@ static void atk49_moveend(void) } while (effect == 0) } #else -__attribute__((naked)) +NAKED void atk49_moveend(void) { asm(".syntax unified\n\ @@ -8498,7 +8498,7 @@ static void atk50_openpartyscreen(void) } */ -__attribute__((naked)) +NAKED static void atk50_openpartyscreen(void) { asm(".syntax unified\n\ @@ -9965,7 +9965,7 @@ static void atk5D_getmoneyreward(void) gBattlescriptCurrInstr += 1; } #else -__attribute__((naked)) +NAKED static void atk5D_getmoneyreward(void) { asm(".syntax unified\n\ @@ -10508,7 +10508,7 @@ static void atk6C_drawlvlupbox(void) } #else -__attribute__((naked)) +NAKED static void atk6C_drawlvlupbox(void) { asm(".syntax unified\n\ @@ -12631,7 +12631,7 @@ static void atk9D_mimicattackcopy(void) } #if DEBUG -__attribute__((naked)) +NAKED static void atk9E_metronome(void) { asm("\ @@ -12834,7 +12834,7 @@ static void atk9E_metronome(void) } #else -__attribute__((naked)) +NAKED static void atk9E_metronome(void) { asm(".syntax unified\n\ @@ -13097,7 +13097,7 @@ static void atkA6_settypetorandomresistance(void) } #else -__attribute__((naked)) +NAKED static void atkA6_settypetorandomresistance(void) { asm(".syntax unified\n\ @@ -13997,7 +13997,7 @@ static void atkC0_recoverbasedonsunlight(void) } } -__attribute__((naked)) +NAKED static void atkC1_hiddenpowercalc(void) { asm(".syntax unified\n\ @@ -14231,7 +14231,7 @@ static void atkC4_trydobeatup(void) } } #else -__attribute__((naked)) +NAKED static void atkC4_trydobeatup(void) { asm(".syntax unified\n\ @@ -14655,7 +14655,7 @@ static void atkD2_tryswapitems(void) } #else -__attribute__((naked)) +NAKED static void atkD2_tryswapitems(void) { asm(".syntax unified\n\ @@ -15210,7 +15210,7 @@ static void atkDE_asistattackselect(void) } #else -__attribute__((naked)) +NAKED static void atkDE_asistattackselect(void) { asm(".syntax unified\n\ @@ -15875,7 +15875,7 @@ static void atkF2_displaydexinfo(void) } } -__attribute__((naked)) +NAKED void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0) { asm(".syntax unified\n\ diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c index 134f6c18b..447909091 100644 --- a/src/battle/battle_ai.c +++ b/src/battle/battle_ai.c @@ -1008,7 +1008,7 @@ static void BattleAICmd_is_most_powerful_move(void) gAIScriptPtr += 1; } #else -__attribute__((naked)) +NAKED static void BattleAICmd_is_most_powerful_move(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_ai_switch_items.c b/src/battle/battle_ai_switch_items.c index e01c7b729..4dd7614bf 100755 --- a/src/battle/battle_ai_switch_items.c +++ b/src/battle/battle_ai_switch_items.c @@ -107,7 +107,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard } #else -__attribute__((naked)) +NAKED static bool8 ShouldSwitchIfWonderGuard(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c index a3360096a..2f57bcd97 100644 --- a/src/battle/battle_anim.c +++ b/src/battle/battle_anim.c @@ -2528,7 +2528,7 @@ s8 BattleAnimAdjustPanning(s8 a) //_0807706E } */ -__attribute__((naked)) +NAKED s8 BattleAnimAdjustPanning(s8 a) { asm(".syntax unified\n\ diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c index 583690c27..d6e7ed4a7 100644 --- a/src/battle/battle_controller_opponent.c +++ b/src/battle/battle_controller_opponent.c @@ -1438,7 +1438,7 @@ void OpponentHandlecmd19(void) } #if DEBUG -__attribute__((naked)) +NAKED void OpponentHandlecmd20(void) { asm("\ @@ -1812,7 +1812,7 @@ void OpponentHandlecmd20(void) } } #else -__attribute__((naked)) +NAKED void OpponentHandlecmd20(void) { asm(".syntax unified\n\ diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c index 50ab1eb7e..881ec72fc 100644 --- a/src/battle/battle_controller_player.c +++ b/src/battle/battle_controller_player.c @@ -1459,7 +1459,7 @@ void sub_802DB6C(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_802DB6C(u8 taskId) { asm_unified("push {r4-r7,lr}\n\ diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index bd954ae8d..b7c0dce4e 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -539,7 +539,7 @@ void sub_8043740(s16 a, u16 *b, u8 c) asm(""::"r"(r9)); } #else -__attribute__((naked)) +NAKED void sub_8043740(s16 a, u16 *b, u8 c) { asm(".syntax unified\n\ @@ -1123,7 +1123,7 @@ void sub_80440EC(u8 a, s16 b, u8 c) } } #else -__attribute__((naked)) +NAKED void sub_80440EC(u8 a, s16 b, u8 c) { asm(".syntax unified\n\ @@ -1380,7 +1380,7 @@ void sub_8044338(u8 a, struct Pokemon *pkmn) } } #else -__attribute__((naked)) +NAKED void sub_8044338(u8 a, struct Pokemon *pkmn) { asm(".syntax unified\n\ @@ -1925,7 +1925,7 @@ u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) return taskId; } #else -__attribute__((naked)) +NAKED u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) { asm(".syntax unified\n\ diff --git a/src/battle/contest_link_80C857C.c b/src/battle/contest_link_80C857C.c index 4fb236294..94454e45c 100644 --- a/src/battle/contest_link_80C857C.c +++ b/src/battle/contest_link_80C857C.c @@ -107,7 +107,7 @@ u8 sub_80C86A0(const u8 *string) return language; } #else -__attribute__((naked)) u8 sub_80C86A0(const u8 *string) +NAKED u8 sub_80C86A0(const u8 *string) { asm_unified("\tpush {r4,r5,lr}\n" "\tadds r4, r0, 0\n" diff --git a/src/battle_tower.c b/src/battle_tower.c index 8c44b71a3..8659f202f 100644 --- a/src/battle_tower.c +++ b/src/battle_tower.c @@ -514,7 +514,7 @@ bool8 sub_81346F4(void) // } // } -__attribute__((naked)) +NAKED void sub_81347F8(void) { asm(".syntax unified\n\ @@ -906,7 +906,7 @@ void SetEReaderTrainerGfxId(void) // gSaveBlock2.battleTower.records[var2[(Random() % l)]] = *record; // } -__attribute__((naked)) +NAKED void sub_8134AC0(struct BattleTowerRecord *record) { asm(".syntax unified\n\ diff --git a/src/contest.c b/src/contest.c index 031cf768f..f7436c51c 100644 --- a/src/contest.c +++ b/src/contest.c @@ -3891,7 +3891,7 @@ void sub_80B0748(u8 taskId) #undef i } #else -__attribute__((naked)) +NAKED void sub_80B0748(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/contest_effect.c b/src/contest_effect.c index 2932d8e6e..a5615851f 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -646,7 +646,7 @@ static void ContestEffect_BetterIfSameType(void) } } #else -__attribute__((naked)) void ContestEffect_BetterIfSameType(void) +NAKED void ContestEffect_BetterIfSameType(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n" diff --git a/src/contest_painting.c b/src/contest_painting.c index e90391469..28dd3def7 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -104,7 +104,7 @@ static void VBlankCB_ContestPainting(void); void sub_8106B90(); //should be static static void sub_8107090(u8 arg0, u8 arg1); -__attribute__((naked)) +NAKED void sub_8106630(u32 arg0) { asm(".syntax unified\n\ @@ -364,7 +364,7 @@ static void sub_8106AC4(u16 species, u8 arg1) } } #else -__attribute__((naked)) +NAKED static void sub_8106AC4(u16 arg0, u8 arg2) { asm(".syntax unified\n\ @@ -497,7 +497,7 @@ void sub_8106B90(u8 a[][8][8][4], u16 b[], u16 c[][8][8][8]) } } #else -__attribute__((naked)) +NAKED void sub_8106B90() { asm(".syntax unified\n\ diff --git a/src/daycare.c b/src/daycare.c index e26db531f..a77b6c5f5 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -592,7 +592,7 @@ void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxP } } #else -__attribute__((naked)) +NAKED void BuildEggMoveset(struct Pokemon *egg, struct BoxPokemon *father, struct BoxPokemon *mother) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1119,7 +1119,7 @@ static bool8 _ShouldEggHatch(struct DayCare *daycare) return FALSE; } #else -__attribute__((naked)) +NAKED static bool8 _ShouldEggHatch(struct DayCare *daycare) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1398,7 +1398,7 @@ static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) } } #else -__attribute__((naked)) +NAKED static u8 GetDaycareCompatibilityScore(struct DayCare *daycare) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c index c93ef74cd..24e0fa51b 100644 --- a/src/de_rom_8040FE0.c +++ b/src/de_rom_8040FE0.c @@ -89,7 +89,7 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) } #else -__attribute__((naked)) +NAKED void de_sub_8041024(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c index 3880c7b7b..f40d5556a 100644 --- a/src/debug/nakamura_debug_menu.c +++ b/src/debug/nakamura_debug_menu.c @@ -1335,7 +1335,7 @@ static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) return 0; // PBLOCK_CLR_UNKNOWN } #else -__attribute__((naked)) +NAKED static u8 SetPokeblock_CalcColor(u8 * dest, struct Pokeblock * pokeblock) { asm("\tpush\t{r4, r5, r6, r7, lr}\n" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index efabbe30e..0328565c6 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -300,12 +300,12 @@ const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; -__attribute__((unused)) static u8 gUnknown_030006B8[4]; -__attribute__((unused)) static u8 gUnknown_030006BC[4]; -__attribute__((unused)) static u8 gUnknown_030006C0; -__attribute__((unused)) static u8 gUnknown_030006C1; +static u8 gUnknown_030006B8; +UNUSED static u32 gUnknown_030006BC; +static u8 gUnknown_030006C0; +static u8 gUnknown_030006C1; static const u8 *gUnknown_030006C4; -__attribute__((unused)) static u8 gUnknown_030006C8; +static u8 gUnknown_030006C8; void debug_sub_8076AC8(u8 a) { @@ -997,285 +997,83 @@ u8 DebugMenu_EditPKMN(void) return FALSE; } -__attribute__((naked)) -void DebugMenu_80776B4() +void DebugMenu_80776B4(u8 bgNum) { - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._183 @ Str_839BE4C\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " lsl r3, r4, #0x1\n" - " lsl r5, r4, #0x19\n" - " lsr r5, r5, #0x18\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x19\n" - " add r1, r5, #0\n" - " mov r2, #0x1d\n" - " bl Menu_BlankWindowRect\n" - " ldr r0, ._183 + 4 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " ASR r0, r4\n" - " mov r1, #0x1\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, sp\n" - " mov r1, #0x19\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._184:\n" - " .align 2, 0\n" - "._183:\n" - " .word Str_839BE4C\n" - " .word gUnknown_030006C8 \n" - "\n" - ); + u8 sp00[] = __("OFF$" + "ON$"); + Menu_BlankWindowRect(25, bgNum * 2, 29, bgNum * 2 + 1); + Menu_PrintText(sp00 + 4 * ((gUnknown_030006C8 >> bgNum) & 1), 25, bgNum * 2); } -__attribute__((naked)) -void DebugMenu_8077704() +void DebugMenu_8077704(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xffffffec\n" - " ldr r1, ._185 @ Str_839BE53\n" - " mov r0, sp\n" - " mov r2, #0x11\n" - " bl memcpy\n" - " mov r0, #0x13\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x8\n" - " bl Menu_BlankWindowRect\n" - " mov r0, sp\n" - " mov r1, #0x15\n" - " mov r2, #0x0\n" - " bl Menu_PrintText\n" - " ldr r2, ._185 + 4 @ gUnknown_030006C8\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x13\n" - " ldrh r0, [r0]\n" - " lsr r0, r0, #0x8\n" - " mov r1, #0xf\n" - " and r0, r0, r1\n" - " strb r0, [r2]\n" - " mov r0, #0x0\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x1\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x2\n" - " bl DebugMenu_80776B4\n" - " mov r0, #0x3\n" - " bl DebugMenu_80776B4\n" - " add sp, sp, #0x14\n" - " pop {r0}\n" - " bx r0\n" - "._186:\n" - " .align 2, 0\n" - "._185:\n" - " .word Str_839BE53\n" - " .word gUnknown_030006C8 \n" - "\n" - ); + u8 sp00[] = _("BG0\n" + "BG1\n" + "BG2\n" + "BG3\n"); + Menu_BlankWindowRect(19, 0, 29, 8); + Menu_PrintText(sp00, 21, 0); + gUnknown_030006C8 = (REG_DISPCNT >> 8) & 0x0F; + DebugMenu_80776B4(0); + DebugMenu_80776B4(1); + DebugMenu_80776B4(2); + DebugMenu_80776B4(3); } -__attribute__((naked)) -u8 DebugMenu_8077760() +u8 DebugMenu_8077760(void) { - asm( - " push {r4, r5, lr}\n" - " ldr r2, ._190 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " add r5, r2, #0\n" - " cmp r0, #0\n" - " beq ._187 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._190 + 4 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._188 @cond_branch\n" - " sub r0, r0, #0x1\n" - " b ._189\n" - "._191:\n" - " .align 2, 0\n" - "._190:\n" - " .word gMain\n" - " .word gUnknown_030006B8 \n" - "._188:\n" - " mov r0, #0x3\n" - "._189:\n" - " strb r0, [r1]\n" - "._187:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._192 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - " bl Menu_MoveCursor\n" - " ldr r1, ._195 @ gUnknown_030006B8\n" - " ldrb r0, [r1]\n" - " cmp r0, #0x3\n" - " beq ._193 @cond_branch\n" - " add r0, r0, #0x1\n" - " b ._194\n" - "._196:\n" - " .align 2, 0\n" - "._195:\n" - " .word gUnknown_030006B8 \n" - "._193:\n" - " mov r0, #0x0\n" - "._194:\n" - " strb r0, [r1]\n" - "._192:\n" - " ldrh r1, [r5, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._197 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._201 @ gUnknown_030006C8\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x1\n" - " LSL r1, r0\n" - " ldrb r0, [r4]\n" - " eor r1, r1, r0\n" - " strb r1, [r4]\n" - " bl Menu_GetCursorPos\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_80776B4\n" - "._197:\n" - " ldrh r2, [r5, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " bne ._198 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r2\n" - " cmp r0, #0\n" - " beq ._199 @cond_branch\n" - "._198:\n" - " mov r2, #0x80\n" - " lsl r2, r2, #0x13\n" - " ldrh r0, [r2]\n" - " ldr r1, ._201 + 4 @ 0xf0ff\n" - " and r1, r1, r0\n" - " ldr r0, ._201 @ gUnknown_030006C8\n" - " ldrb r0, [r0]\n" - " lsl r0, r0, #0x8\n" - " add r1, r1, r0\n" - " strh r1, [r2]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._200\n" - "._202:\n" - " .align 2, 0\n" - "._201:\n" - " .word gUnknown_030006C8 \n" - " .word 0xf0ff\n" - "._199:\n" - " mov r0, #0x0\n" - "._200:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + if (gUnknown_030006B8 != 0) + gUnknown_030006B8--; + else + gUnknown_030006B8 = 3; + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(+1); + if (gUnknown_030006B8 != 3) + gUnknown_030006B8++; + else + gUnknown_030006B8 = 0; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gUnknown_030006C8 ^= (1 << Menu_GetCursorPos()); + DebugMenu_80776B4(Menu_GetCursorPos()); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + REG_DISPCNT = (REG_DISPCNT & 0xF0FF) + (gUnknown_030006C8 << 8); + CloseMenu(); + return TRUE; + } + return FALSE; } -__attribute__((naked)) -u8 DebugMenu_SwitchBG() +u8 DebugMenu_SwitchBG(void) { - asm( - " push {lr}\n" - " add sp, sp, #0xfffffff8\n" - " bl Menu_EraseScreen\n" - " bl DebugMenu_8077704\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, #0x6\n" - " str r0, [sp, #0x4]\n" - " mov r0, #0x0\n" - " mov r1, #0x14\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl InitMenu\n" - " ldr r1, ._203 @ gMenuCallback\n" - " ldr r0, ._203 + 4 @ DebugMenu_8077760\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " add sp, sp, #0x8\n" - " pop {r1}\n" - " bx r1\n" - "._204:\n" - " .align 2, 0\n" - "._203:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077760+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_8077704(); + InitMenu(0, 20, 0, 4, 0, 6); + gMenuCallback = DebugMenu_8077760; + return FALSE; } -__attribute__((naked)) -void DebugMenu_807786C() +void DebugMenu_807786C(u8 a0) { - asm( - " push {r4, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " ldr r1, ._205 @ Str_839BE64\n" - " mov r0, sp\n" - " mov r2, #0x7\n" - " bl memcpy\n" - " mov r0, #0x19\n" - " mov r1, #0x0\n" - " mov r2, #0x1d\n" - " mov r3, #0x3\n" - " bl Menu_DrawStdWindowFrame\n" - " lsl r0, r4, #0x1\n" - " add r0, r0, r4\n" - " add r0, r0, sp\n" - " mov r1, #0x1a\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " add sp, sp, #0x8\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._206:\n" - " .align 2, 0\n" - "._205:\n" - " .word Str_839BE64\n" - "\n" - ); + u8 sp00[] = __("ON$" + "OFF$"); + + Menu_DrawStdWindowFrame(25, 0, 29, 3); + Menu_PrintText(sp00 + 3 * a0, 26, 1); } -__attribute__((naked)) +NAKED void DebugMenu_80778A8() { asm( @@ -1324,7 +1122,7 @@ void DebugMenu_80778A8() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_ControlEncounter() { asm( @@ -1349,7 +1147,7 @@ u8 DebugMenu_ControlEncounter() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_UseHM() { asm( @@ -1367,7 +1165,7 @@ u8 DebugMenu_UseHM() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077934() { asm( @@ -1393,7 +1191,7 @@ void DebugMenu_8077934() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077954() { asm( @@ -1419,7 +1217,12 @@ void DebugMenu_8077954() ); } -__attribute__((naked)) +const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" + "さいせんじょうたいトレーナー:{STR_VAR_2}"); +const u8 Str_839BE8D[] = _("いる"); +const u8 Str_839BE90[] = _("いない"); + +NAKED void DebugMenu_8077974() { asm( @@ -1503,7 +1306,7 @@ void DebugMenu_8077974() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077A20() { asm( @@ -1526,7 +1329,7 @@ void DebugMenu_8077A20() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077A40() { asm( @@ -1549,7 +1352,7 @@ void DebugMenu_8077A40() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_8077A60() { asm( @@ -1568,7 +1371,7 @@ u8 DebugMenu_8077A60() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_RematchTrainers() { asm( @@ -1594,7 +1397,7 @@ u8 DebugMenu_RematchTrainers() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077A9C() { asm( @@ -1614,7 +1417,7 @@ void DebugMenu_8077A9C() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077AB4() { asm( @@ -1634,7 +1437,7 @@ void DebugMenu_8077AB4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077ACC() { asm( @@ -1656,7 +1459,7 @@ void DebugMenu_8077ACC() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077AE8() { asm( @@ -1676,7 +1479,7 @@ void DebugMenu_8077AE8() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077B00() { asm( @@ -1712,7 +1515,7 @@ void DebugMenu_8077B00() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077B3C() { asm( @@ -1731,7 +1534,7 @@ void DebugMenu_8077B3C() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_Safari() { asm( @@ -1779,7 +1582,7 @@ u8 DebugMenu_Safari() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077BB4() { asm( @@ -1792,7 +1595,7 @@ void DebugMenu_8077BB4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077BC0() { asm( @@ -1805,7 +1608,7 @@ void DebugMenu_8077BC0() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077BCC() { asm( @@ -1818,7 +1621,7 @@ void DebugMenu_8077BCC() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077BD8() { asm( @@ -1831,7 +1634,7 @@ void DebugMenu_8077BD8() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077BE4() { asm( @@ -1845,7 +1648,7 @@ void DebugMenu_8077BE4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077BF4() { asm( @@ -1858,7 +1661,7 @@ void DebugMenu_8077BF4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077C00() { asm( @@ -1877,7 +1680,7 @@ void DebugMenu_8077C00() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077C14() { asm( @@ -1903,7 +1706,7 @@ void DebugMenu_8077C14() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077C3C() { asm( @@ -2006,7 +1809,7 @@ void DebugMenu_8077C3C() ); } -__attribute__((naked)) +NAKED void debug_sub_8077CF4() { asm( @@ -2037,7 +1840,7 @@ void debug_sub_8077CF4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 a2) { asm( @@ -2082,7 +1885,7 @@ void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 a2) ); } -__attribute__((naked)) +NAKED u8 DebugMenu_8077D78(const struct MenuAction *menuActions) { asm( @@ -2122,7 +1925,7 @@ u8 DebugMenu_8077D78(const struct MenuAction *menuActions) ); } -__attribute__((naked)) +NAKED void DebugMenu_8077DB4() { asm( @@ -2149,7 +1952,7 @@ void DebugMenu_8077DB4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077DD8() { asm( @@ -2216,7 +2019,7 @@ void DebugMenu_8077DD8() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077E40() { asm( @@ -2269,7 +2072,7 @@ void DebugMenu_8077E40() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_MakeItems() { asm( @@ -2284,7 +2087,7 @@ u8 DebugMenu_MakeItems() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077EAC() { asm( @@ -2316,7 +2119,7 @@ void DebugMenu_8077EAC() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077EE0() { asm( @@ -2367,7 +2170,7 @@ void DebugMenu_8077EE0() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077F40() { asm( @@ -2402,7 +2205,7 @@ void DebugMenu_8077F40() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077F7C() { asm( @@ -2471,7 +2274,7 @@ void DebugMenu_8077F7C() ); } -__attribute__((naked)) +NAKED void DebugMenu_8077FFC() { asm( @@ -2537,7 +2340,7 @@ void DebugMenu_8077FFC() ); } -__attribute__((naked)) +NAKED void DebugMenu_807806C() { asm( @@ -2557,7 +2360,7 @@ void DebugMenu_807806C() ); } -__attribute__((naked)) +NAKED void DebugMenu_807808C() { asm( @@ -2677,7 +2480,7 @@ void DebugMenu_807808C() ); } -__attribute__((naked)) +NAKED void DebugMenu_807817C() { asm( @@ -2706,7 +2509,7 @@ void DebugMenu_807817C() ); } -__attribute__((naked)) +NAKED void DebugMenu_80781A8() { asm( @@ -2788,7 +2591,7 @@ void DebugMenu_80781A8() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_ViewPortraits() { asm( @@ -2809,7 +2612,7 @@ u8 DebugMenu_ViewPortraits() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078254() { asm( @@ -2821,7 +2624,7 @@ void DebugMenu_8078254() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_AllBadges() { asm( @@ -2861,7 +2664,7 @@ u8 DebugMenu_AllBadges() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_TimeRecords() { asm( @@ -2882,7 +2685,7 @@ u8 DebugMenu_TimeRecords() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_SetTime() { asm( @@ -2897,7 +2700,7 @@ u8 DebugMenu_SetTime() ); } -__attribute__((naked)) +NAKED void DebugMenu_80782EC() { asm( @@ -2922,7 +2725,7 @@ void DebugMenu_80782EC() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078310() { asm( @@ -3010,7 +2813,7 @@ void DebugMenu_8078310() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_MiragaIslandRND() { asm( @@ -3031,7 +2834,7 @@ u8 DebugMenu_MiragaIslandRND() ); } -__attribute__((naked)) +NAKED void DebugMenu_80783C8() { asm( @@ -3094,7 +2897,7 @@ void DebugMenu_80783C8() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_ToggleClearFlag() { asm( @@ -3123,7 +2926,7 @@ u8 DebugMenu_ToggleClearFlag() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078464() { asm( @@ -3173,7 +2976,7 @@ void DebugMenu_8078464() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_OpenWeatherEvents() { asm( @@ -3205,7 +3008,7 @@ u8 DebugMenu_OpenWeatherEvents() ); } -__attribute__((naked)) +NAKED void DebugMenu_80784E8() { asm( @@ -3244,7 +3047,7 @@ void DebugMenu_80784E8() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_OpenMysteryEvent() { asm( @@ -3273,7 +3076,7 @@ u8 DebugMenu_OpenMysteryEvent() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078550() { asm( @@ -3367,7 +3170,7 @@ void DebugMenu_8078550() ); } -__attribute__((naked)) +NAKED void DebugMenu_807860C() { asm( @@ -3472,7 +3275,7 @@ void DebugMenu_807860C() ); } -__attribute__((naked)) +NAKED void DebugMenu_80786C0() { asm( @@ -3486,7 +3289,7 @@ void DebugMenu_80786C0() ); } -__attribute__((naked)) +NAKED void DebugMenu_80786D0() { asm( @@ -3527,7 +3330,7 @@ void DebugMenu_80786D0() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078714() { asm( @@ -3568,7 +3371,7 @@ void DebugMenu_8078714() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078758() { asm( @@ -3587,7 +3390,7 @@ void DebugMenu_8078758() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078774() { asm( @@ -3606,7 +3409,7 @@ void DebugMenu_8078774() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078788() { asm( @@ -3625,7 +3428,7 @@ void DebugMenu_8078788() ); } -__attribute__((naked)) +NAKED void DebugMenu_807879C() { asm( @@ -3644,7 +3447,7 @@ void DebugMenu_807879C() ); } -__attribute__((naked)) +NAKED void DebugMenu_80787B0() { asm( @@ -3663,7 +3466,7 @@ void DebugMenu_80787B0() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_OpenLegendsRecord() { asm( @@ -3689,7 +3492,7 @@ u8 DebugMenu_OpenLegendsRecord() ); } -__attribute__((naked)) +NAKED void DebugMenu_80787EC() { asm( @@ -3759,7 +3562,7 @@ void DebugMenu_80787EC() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078880() { asm( @@ -3828,7 +3631,7 @@ void DebugMenu_8078880() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_CellInfo() { asm( @@ -3850,7 +3653,7 @@ u8 DebugMenu_CellInfo() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_OpenBerryInfo() { asm( @@ -3889,7 +3692,7 @@ u8 DebugMenu_OpenBerryInfo() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078950() { asm( @@ -3909,7 +3712,7 @@ void DebugMenu_8078950() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078968() { asm( @@ -3948,7 +3751,7 @@ void DebugMenu_8078968() ); } -__attribute__((naked)) +NAKED void DebugMenu_80789A4() { asm( @@ -3976,7 +3779,7 @@ void DebugMenu_80789A4() ); } -__attribute__((naked)) +NAKED void DebugMenu_80789CC() { asm( @@ -4016,7 +3819,7 @@ void DebugMenu_80789CC() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078A14() { asm( @@ -4100,7 +3903,7 @@ void DebugMenu_8078A14() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078AA4() { asm( @@ -4183,7 +3986,7 @@ void DebugMenu_8078AA4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078B38() { asm( @@ -4202,7 +4005,7 @@ void DebugMenu_8078B38() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_BattleTowerStages() { asm( @@ -4223,7 +4026,7 @@ u8 DebugMenu_BattleTowerStages() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078B70() { asm( @@ -4248,7 +4051,7 @@ void DebugMenu_8078B70() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078B94() { asm( @@ -4291,7 +4094,7 @@ void DebugMenu_8078B94() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078BD4() { asm( @@ -4367,7 +4170,7 @@ void DebugMenu_8078BD4() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_CheckPKBLCK() { asm( @@ -4388,7 +4191,7 @@ u8 DebugMenu_CheckPKBLCK() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078C80() { asm( @@ -4414,7 +4217,7 @@ void DebugMenu_8078C80() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078CA8() { asm( @@ -4453,7 +4256,7 @@ void DebugMenu_8078CA8() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078CE4() { asm( @@ -4497,7 +4300,7 @@ void DebugMenu_8078CE4() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078D30() { asm( @@ -4539,7 +4342,7 @@ void DebugMenu_8078D30() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078D7C() { asm( @@ -4565,7 +4368,7 @@ void DebugMenu_8078D7C() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078DA4() { asm( @@ -4592,7 +4395,7 @@ void DebugMenu_8078DA4() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_MeTooBackupMan() { asm( @@ -4618,7 +4421,7 @@ u8 DebugMenu_MeTooBackupMan() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078DF0() { asm( @@ -4637,7 +4440,7 @@ void DebugMenu_8078DF0() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078E04() { asm( @@ -4680,7 +4483,7 @@ void DebugMenu_8078E04() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078E40() { asm( @@ -4705,7 +4508,7 @@ void DebugMenu_8078E40() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078E68() { asm( @@ -4724,7 +4527,7 @@ void DebugMenu_8078E68() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078E80() { asm( @@ -4755,7 +4558,7 @@ void DebugMenu_8078E80() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078EB0() { asm( @@ -4811,7 +4614,7 @@ void DebugMenu_8078EB0() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078F1C() { asm( @@ -4854,7 +4657,7 @@ void DebugMenu_8078F1C() ); } -__attribute__((naked)) +NAKED void DebugMenu_8078F68() { asm( @@ -4959,7 +4762,7 @@ void DebugMenu_8078F68() ); } -__attribute__((naked)) +NAKED void DebugMenu_8079020() { asm( @@ -4978,7 +4781,7 @@ void DebugMenu_8079020() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_PTime() { asm( @@ -4999,7 +4802,7 @@ u8 DebugMenu_PTime() ); } -__attribute__((naked)) +NAKED void DebugMenu_8079058() { asm( @@ -5093,7 +4896,7 @@ void DebugMenu_8079058() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_OpenMurakawa() { asm( @@ -5114,7 +4917,7 @@ u8 DebugMenu_OpenMurakawa() ); } -__attribute__((naked)) +NAKED void DebugMenu_8079110() { asm( @@ -5187,7 +4990,7 @@ void DebugMenu_8079110() ); } -__attribute__((naked)) +NAKED u8 DebugMenu_OpenKiwa() { asm( diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c index 3d4637746..40df600fa 100644 --- a/src/debug/tomomichi_debug_menu.c +++ b/src/debug/tomomichi_debug_menu.c @@ -4161,7 +4161,7 @@ static void PicTest_Redraw(u8 a0) } } #else -__attribute__((naked)) void PicTest_Redraw(u8 a0) +NAKED void PicTest_Redraw(u8 a0) { asm("\tpush\t{r4, r5, r6, r7, lr}\n" "\tmov\tr7, r8\n" diff --git a/src/decoration.c b/src/decoration.c index 477414993..b00a51ef0 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1856,7 +1856,7 @@ void sub_80FECE0(u8 decoCat) sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1); } #elif GERMAN -__attribute__((naked)) +NAKED void sub_80FECE0(u8 decoCat) { asm(".syntax unified\n\ @@ -2575,7 +2575,7 @@ bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) return TRUE; } #else -__attribute__((naked)) +NAKED bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) { asm(".syntax unified\n" @@ -4036,7 +4036,7 @@ void sub_8101460(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_8101460(u8 taskId) { asm(".syntax unified\n" diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index ed6a97ba2..01290daba 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -2133,7 +2133,7 @@ u16 sub_80EAE88(u8 group) } #if GERMAN -__attribute__((naked)) +NAKED void sub_80EAECC(void) { asm(".syntax unified\n\ diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 5bba69f86..43dfa6864 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -317,7 +317,7 @@ static bool8 sub_8042ABC(void* a, u8 b) } #else -__attribute__((naked)) +NAKED static bool8 sub_8042ABC(void* a, u8 b) { asm(".syntax unified\n\ diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 155ce33f5..3fb611433 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8145,7 +8145,7 @@ void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) } } #else -__attribute__((naked)) +NAKED void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/evolution_scene.c b/src/evolution_scene.c index a3a5dbcec..4fdbeb60f 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -1511,7 +1511,7 @@ void unref_sub_8113B50(u8 *a, u8 *b) #undef sp4 } */ -__attribute__((naked)) +NAKED void unref_sub_8113B50() { asm(".syntax unified\n\ @@ -2436,7 +2436,7 @@ void sub_811430C(u32 a, u32 b) sEvoInfo.unk90C4[b][a] = r7 * 16; } -__attribute__((naked)) +NAKED void unref_sub_81143CC() { asm(".syntax unified\n\ @@ -3688,7 +3688,7 @@ void sub_8114DF0(u32 a, u8 b) } } -__attribute__((naked)) +NAKED void sub_8114E48() { asm(".syntax unified\n\ diff --git a/src/field_effect.c b/src/field_effect.c index f85bc520e..ae0acf1a0 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -601,7 +601,7 @@ void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) gPlttBufferFaded[i] = RGB(curRed, curGreen, curBlue); } #else -__attribute__((naked)) +NAKED void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { asm(".syntax unified\n" @@ -676,7 +676,7 @@ void MultiplyInvertedPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) ".syntax divided"); } -__attribute__((naked)) +NAKED void MultiplyPaletteRGBComponents(u16 i, u8 r, u8 g, u8 b) { asm(".syntax unified\n" @@ -2607,7 +2607,7 @@ bool8 sub_8088708(struct Task *task) return FALSE; } #else -__attribute__((naked)) +NAKED bool8 sub_8088708(struct Task *task) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index bc4a1770e..216f39d62 100644 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -1024,7 +1024,7 @@ static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) } } #else -__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) +NAKED static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r8\n" @@ -1496,7 +1496,7 @@ static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) } } #else -__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) +NAKED static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset) { asm_unified("\tpush {r4-r7,lr}\n" "\tadds r6, r0, 0\n" diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index a7087be0f..4a4122641 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -512,7 +512,7 @@ void sub_80810DC(void) #if DEBUG -__attribute__((naked)) +NAKED void debug_sub_80888D8() { asm("\ diff --git a/src/field_specials.c b/src/field_specials.c index 715086f00..eff623548 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -1172,7 +1172,7 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) return flag; } #else -__attribute__((naked)) +NAKED bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) { asm_unified("\tpush {r4-r7,lr}\n" @@ -1630,7 +1630,7 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) return flag; } #else -__attribute__((naked)) +NAKED bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/field_tasks.c b/src/field_tasks.c index ce5fc6c0e..e4f1aadf2 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -213,7 +213,7 @@ void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 } } #else -__attribute__((naked)) +NAKED void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) { asm_unified("\tpush {r4-r7,lr}\n" diff --git a/src/item.c b/src/item.c index 41cbb7a1e..e6294884b 100644 --- a/src/item.c +++ b/src/item.c @@ -239,7 +239,7 @@ bool8 AddBagItem(u16 itemId, u16 count) return TRUE; } //#else -//__attribute__((naked)) +//NAKED //bool8 AddBagItem(u16 itemId, u16 count) //{ // asm(".syntax unified\n\ diff --git a/src/item_menu.c b/src/item_menu.c index 981f42282..a5748cdab 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1278,7 +1278,7 @@ static void sub_80A4548(u16 a, int b, int c, int d) } } #else -__attribute__((naked)) +NAKED static void sub_80A4548(u16 a, int b, int c, int d) { asm(".syntax unified\n\ @@ -2102,7 +2102,7 @@ static void sub_80A5414(u8 taskId) } } #else -__attribute__((naked)) +NAKED static void sub_80A5414(u8 taskId) { asm(".syntax unified\n\ @@ -2337,7 +2337,7 @@ _080A55FA:\n\ } #endif -__attribute__((naked)) +NAKED static void sub_80A5600(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/item_use.c b/src/item_use.c index a14abbe3e..19c298850 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -439,7 +439,7 @@ void sub_80C9720(u8 taskId) } } #else -__attribute__((naked)) +NAKED void sub_80C9720(u8 taskId) { asm(".syntax unified\n\ diff --git a/src/mauville_man.c b/src/mauville_man.c index a68d5071d..088085851 100644 --- a/src/mauville_man.c +++ b/src/mauville_man.c @@ -557,7 +557,7 @@ static const u16 gUnknown_083E53C8[][2] = {0x15, 0}, }; -__attribute__((naked)) +NAKED static void sub_80F7DC0(void) { asm(".syntax unified\n\ diff --git a/src/menu.c b/src/menu.c index 0e615a6d2..9abcf66d1 100644 --- a/src/menu.c +++ b/src/menu.c @@ -644,7 +644,7 @@ int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) Menu_BlankWindowRect(left, top + 2 * newlineCount, left + width - 1, height + top - 1); } #elif GERMAN -__attribute__((naked)) +NAKED int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { asm(".syntax unified\n\ diff --git a/src/menu_cursor.c b/src/menu_cursor.c index f2eb31f16..32578d1a4 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -236,7 +236,7 @@ void sub_814A958(u8 a) SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7); } #else -__attribute__((naked)) +NAKED void sub_814A958(u8 a1) { asm(".syntax unified\n\ @@ -419,7 +419,7 @@ _0814AAB8: .4byte gUnknown_0203A3D1\n\ } #endif #elif GERMAN -__attribute__((naked)) +NAKED void sub_814A958(u8 a1) { asm(".syntax unified\n\ diff --git a/src/money.c b/src/money.c index 3b7268dbc..1081d5063 100644 --- a/src/money.c +++ b/src/money.c @@ -176,7 +176,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top) #endif } -__attribute__((naked)) +NAKED void Draw10000Sprite(u8 var1, u8 var2, int var3) { asm(".syntax unified\n\ diff --git a/src/option_menu.c b/src/option_menu.c index a2d32ffb6..8a46e48d9 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -463,7 +463,7 @@ static void FrameType_DrawChoices(u8 selection) Menu_PrintText(text, 18, 15); } #elif GERMAN -__attribute__((naked)) +NAKED static void FrameType_DrawChoices(u8 selection) { asm(".syntax unified\n\ diff --git a/src/party_menu.c b/src/party_menu.c index 9caaa05b9..b9d3796f1 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1007,7 +1007,7 @@ void sub_806B908(void) ewram1B000.unk261 = 2; } #else -__attribute__((naked)) +NAKED void sub_806B908(void) { asm(".syntax unified\n\ @@ -1326,7 +1326,7 @@ u16 HandleDefaultPartyMenuInput(u8 taskId) return gMain.newAndRepeatedKeys; } #else -__attribute__((naked)) +NAKED u16 HandleDefaultPartyMenuInput(u8 taskId) { asm(".syntax unified\n\ @@ -1810,7 +1810,7 @@ void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 dire } #else -__attribute__((naked)) +NAKED void ChangeLinkDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed) { asm(".syntax unified\n\ @@ -2408,7 +2408,7 @@ void sub_806CF04(void) gSprites[ewram01000.unk4].callback = SpriteCB_sub_806D37C; } #else -__attribute__((naked)) +NAKED void sub_806CF04(void) { asm(".syntax unified\n\ @@ -2986,7 +2986,7 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) gSprites[heldItemSpriteId].callback(&gSprites[heldItemSpriteId]); } #else -__attribute__((naked)) +NAKED void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item) { asm(".syntax unified\n\ @@ -3172,7 +3172,7 @@ void SetHeldItemIconVisibility(u8 taskId, u8 monIndex) } } #else -__attribute__((naked)) +NAKED void SetHeldItemIconVisibility(u8 a, u8 monIndex) { asm(".syntax unified\n\ @@ -5111,7 +5111,7 @@ u8 GetItemEffectType(u16 item) } } #else -__attribute__((naked)) +NAKED u8 GetItemEffectType(u16 item) { asm(".syntax unified\n\ diff --git a/src/pokedex.c b/src/pokedex.c index d90b73178..61f2bfbba 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3522,7 +3522,7 @@ static void sub_8090584(u8 a, u16 b) } } #else -__attribute__((naked)) +NAKED static void sub_8090584(u8 a, u16 b) { asm(".syntax unified\n\ @@ -3666,7 +3666,7 @@ static void sub_8090644(u8 a, u16 b) } } #else -__attribute__((naked)) +NAKED static void sub_8090644(u8 a, u16 b) { asm(".syntax unified\n\ @@ -5120,7 +5120,7 @@ void sub_8092810(u8 a, u8 b, u8 c, u8 d) } } #else -__attribute__((naked)) +NAKED void sub_8092810(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 1ea8bc205..770b69813 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -405,7 +405,7 @@ void ResetPokemonStorageSystem(void) } #if DEBUG -__attribute__((naked)) +NAKED void debug_sub_80A3904(void) { asm("\ diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 0331abf3e..0905c185b 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -1564,7 +1564,7 @@ const struct SpriteTemplate gSpriteTemplate_83B6DDC = { 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; -__attribute__((naked)) void sub_80980D4(void) +NAKED void sub_80980D4(void) { asm_unified("\tpush {r4,r5,lr}\n" "\tsub sp, 0x28\n" diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index 2f9f79a54..2383ac46c 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -519,7 +519,7 @@ void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) } } #else -__attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) +NAKED void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -808,7 +808,7 @@ void sub_809A14C(u16 *vdest) } } #else -__attribute__((naked)) void sub_809A14C(u16 *vdest) +NAKED void sub_809A14C(u16 *vdest) { asm_unified("\tpush {r4-r6,lr}\n" "\tadds r2, r0, 0\n" @@ -2214,7 +2214,7 @@ u8 sub_809C464(void) return r9; } #else -__attribute__((naked)) u8 sub_809C464(void) +NAKED u8 sub_809C464(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r9\n" @@ -2584,7 +2584,7 @@ u8 sub_809C664(void) return r8; } #else -__attribute__((naked)) u8 sub_809C664(void) +NAKED u8 sub_809C664(void) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 75ddb52d0..f8f075296 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1227,7 +1227,7 @@ static void sub_809E83C(u8 taskId, s8 b) sub_80A2078(taskId); } -__attribute__((naked)) +NAKED static void sub_809E8F0(/*u8 taskId, s8 direction, u8 *c*/) { asm(".syntax unified\n\ @@ -1766,7 +1766,7 @@ static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) } } #else -__attribute__((naked)) +NAKED static void SummaryScreenHandleUpDownInput(u8 taskId, s8 direction) { asm(".syntax unified\n\ @@ -1897,7 +1897,7 @@ s8 sub_809F284(s8 a) } } #else -__attribute__((naked)) +NAKED s8 sub_809F284(s8 a) { asm(".syntax unified\n\ @@ -2316,7 +2316,7 @@ u8 sub_809FA30(void) // vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80; // vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81; // } -__attribute__((naked)) +NAKED void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ @@ -2840,7 +2840,7 @@ static void sub_80A057C(u16 move) } } #else -__attribute__((naked)) +NAKED static void sub_80A057C(u16 move) { asm(".syntax unified\n\ @@ -3463,7 +3463,7 @@ static void DrawSummaryScreenNavigationDots(void) DmaCopy16Defvars(3, arr, (void *)(VRAM + 0xE056), 16); } #else -__attribute__((naked)) +NAKED static void DrawSummaryScreenNavigationDots(void) { asm(".syntax unified\n\ @@ -3646,7 +3646,7 @@ _080A1044: .4byte 0x0600e056\n\ } #endif // NONMATCHING -__attribute__((naked)) +NAKED void sub_80A1048(u8 taskId) { asm(".syntax unified\n\ @@ -4049,7 +4049,7 @@ static void sub_80A12D0(s8 a) // DestroyTask(taskId); // } // } -__attribute__((naked)) +NAKED static void sub_80A1334(u8 taskId) { asm(".syntax unified\n\ @@ -4245,7 +4245,7 @@ static void sub_80A1488(s8 a, u8 b) gTasks[taskId].data[3] = b; } -__attribute__((naked)) +NAKED static void sub_80A1500(u8 taskId) { asm(".syntax unified\n\ @@ -4487,7 +4487,7 @@ static void sub_80A16CC(u8 a) } } #else -__attribute__((naked)) +NAKED static void sub_80A16CC(u8 a) { asm(".syntax unified\n\ @@ -4884,7 +4884,7 @@ void sub_80A1D18(void) StartSpriteAnim(&gSprites[ewram1A000[29]], statusAndPkrs2); } #else -__attribute__((naked)) +NAKED void sub_80A1D18(void) { asm(".syntax unified\n\ diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 55cf05790..8684f2155 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -1793,7 +1793,7 @@ label2: } #else #if DEBUG -__attribute__((naked)) +NAKED void sub_80ED858() { asm("\ @@ -2216,7 +2216,7 @@ void sub_80ED858() .word 0xfbd"); } #else -__attribute__((naked)) +NAKED void sub_80ED858() { asm_unified("push {r4,r5,lr}\n\ @@ -3277,7 +3277,7 @@ bool8 sub_80EEA0C() { } } #else -__attribute__((naked)) +NAKED bool8 sub_80EEA0C() { asm_unified( "push {r4,lr}\n\ @@ -3969,7 +3969,7 @@ void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) } } #else -__attribute__((naked)) +NAKED void sub_80EF624(const u16 *a, const u16 *b, u8 c, u8 d, u16 *palettes) { asm(".syntax unified\n\ @@ -4713,7 +4713,7 @@ bool8 sub_80F02A0(void) return TRUE; } #else -__attribute__((naked)) +NAKED bool8 sub_80F02A0(void) { asm(".syntax unified\n\ diff --git a/src/record_mixing.c b/src/record_mixing.c index a2660bf82..0eb13899e 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -635,7 +635,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) SeedRng(sp40); } #else -__attribute__((naked)) +NAKED void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d) { asm(".syntax unified\n\ diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 69f655a65..f5e8fa99a 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -923,7 +923,7 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) return 1; } #else -__attribute__((naked)) +NAKED static int RotatingGate_CanRotate(u8 a, int puzzleType) { asm(".syntax unified\n\ diff --git a/src/roulette.c b/src/roulette.c index 5e7517d79..b278521b1 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -2733,7 +2733,7 @@ void sub_811952C(struct Sprite *sprite) sprite->callback = sub_8118CEC; } #else -__attribute__((naked)) +NAKED void sub_811952C(struct Sprite *sprite) { asm_unified("push {r4-r7,lr}\n" diff --git a/src/script_menu.c b/src/script_menu.c index 9d901a03c..615004be3 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -930,7 +930,7 @@ void ScriptMenu_CreatePCMenu(void) StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices); } #elif GERMAN -__attribute__((naked)) +NAKED void ScriptMenu_CreatePCMenu(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ diff --git a/src/secret_base.c b/src/secret_base.c index 210d49835..3c4028dca 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -694,7 +694,7 @@ void sub_80BC300(void) } } #else -__attribute__((naked)) +NAKED void sub_80BC300(void) { asm(".syntax unified\n\ diff --git a/src/shop.c b/src/shop.c index 42cda5e2e..96b417b68 100644 --- a/src/shop.c +++ b/src/shop.c @@ -811,7 +811,7 @@ static void Shop_MoveItemListUp(void) } } #else -__attribute__((naked)) +NAKED static void Shop_MoveItemListUp(void) { asm(".syntax unified\n\ @@ -950,7 +950,7 @@ static void Shop_MoveItemListDown(void) } } #else -__attribute__((naked)) +NAKED static void Shop_MoveItemListDown(void) { asm(".syntax unified\n\ diff --git a/src/starter_choose.c b/src/starter_choose.c index 418488774..ff8c706b8 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -548,7 +548,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) REG_WIN0V = WIN_RANGE(labelTop, labelBottom); } #elif GERMAN -__attribute__((naked)) +NAKED static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) { asm(".syntax unified\n\ diff --git a/src/title_screen.c b/src/title_screen.c index a1c8e081d..30ba7191e 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -437,7 +437,7 @@ static void CreatePressStartBanner(s16 x, s16 y) } } #elif GERMAN -__attribute__((naked)) +NAKED static void CreatePressStartBanner(s16 x, s16 y) { asm(".syntax unified\n\ diff --git a/src/trade.c b/src/trade.c index a05bddee4..3245ec5b0 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1492,7 +1492,7 @@ static void sub_8048B0C(u8 a0) #pragma pop_macro("BLOCKSIZE") #else asm(".include \"constants/gba_constants.inc\""); -__attribute__((naked)) +NAKED static void sub_8048B0C(u8 a0) { asm_unified("\tpush {r4-r7,lr}\n" @@ -2488,7 +2488,7 @@ static void sub_8049ED4(u8 a0) } } #else -__attribute__((naked)) +NAKED static void sub_8049ED4(u8 a0) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3055,7 +3055,7 @@ static void sub_804A41C(u8 whichParty) } } #else -__attribute__((naked)) +NAKED static void sub_804A41C(u8 whichParty) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3250,7 +3250,7 @@ static void sub_804A6DC(u8 whichParty) } } #else -__attribute__((naked)) +NAKED static void sub_804A6DC(u8 whichParty) { asm_unified("\tpush {r4-r7,lr}\n" @@ -3561,7 +3561,7 @@ static void sub_804ACF4(u8 who) } } #else -static __attribute__((naked)) void sub_804ACF4(u8 who) +static NAKED void sub_804ACF4(u8 who) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r9\n" @@ -3869,7 +3869,7 @@ static void sub_804B1BC(void) } } #else -__attribute__((naked)) static void sub_804B1BC(void) +NAKED static void sub_804B1BC(void) { asm_unified("\tpush {lr}\n" "\tldr r1, _0804B1FC @ =REG_BG1VOFS\n" @@ -4113,7 +4113,7 @@ static void sub_804B41C(void) UpdatePaletteFade(); } #else -static __attribute__((naked)) void sub_804B41C(void) +static NAKED void sub_804B41C(void) { asm_unified("\tpush {r4-r6,lr}\n" "\tsub sp, 0x4\n" diff --git a/src/trainer_card.c b/src/trainer_card.c index 8d16aa9bf..599479f16 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -864,7 +864,7 @@ bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) } */ -__attribute__((naked)) +NAKED bool8 TrainerCard_ScaleDownFlipAnimation(struct Task *task) { asm(".syntax unified\n\ @@ -1028,7 +1028,7 @@ bool8 TrainerCard_SwitchToNewSide(struct Task *task) return TRUE; } -__attribute__((naked)) +NAKED bool8 TrainerCard_ScaleUpFlipAnimation(struct Task *task) { asm(".syntax unified\n\ diff --git a/src/tv.c b/src/tv.c index 6c24170ae..b195c1e99 100644 --- a/src/tv.c +++ b/src/tv.c @@ -2435,7 +2435,7 @@ void sub_80C01D4(void) } } #else -__attribute__((naked)) +NAKED void sub_80C01D4(void) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ diff --git a/src/unk_text_8095904.c b/src/unk_text_8095904.c index 4b190bdaa..df0a35e7c 100644 --- a/src/unk_text_8095904.c +++ b/src/unk_text_8095904.c @@ -64,7 +64,7 @@ void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *b } } #else -__attribute__((naked)) void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer) +NAKED void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 8ea93aab8..8205f4f70 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -697,7 +697,7 @@ static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2) } } #else -__attribute__((naked)) +NAKED static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2) { asm_unified("\tpush {r4,lr}\n" diff --git a/src/util.c b/src/util.c index e14665a03..2e76cf4de 100644 --- a/src/util.c +++ b/src/util.c @@ -231,7 +231,7 @@ void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) #else -__attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) +NAKED void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { asm("\n" " .syntax unified\n" -- cgit v1.2.3 From dc729e5d420c63e83b92ca1b984e164ef7559c8b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 09:48:41 -0400 Subject: through DebugMenu_Safari --- data/start_menu_debug.s | 56 ---- include/safari_zone.h | 3 +- include/wild_encounter.h | 1 + src/debug/start_menu_debug.c | 649 +++++++++++-------------------------------- src/safari_zone.c | 2 +- src/wild_encounter.c | 6 +- 6 files changed, 176 insertions(+), 541 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index f309fc740..d8099cbd2 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,63 +6,7 @@ .section .rodata -Str_839BE94:: @ 0x839BE94 - .string "Max num of steps$" - -Str_839BEA5:: @ 0x839BEA5 - .string "Clear num of steps$" - -Str_839BEB8:: @ 0x839BEB8 - .string "See trainers$" - -Str_839BEC5:: @ 0x839BEC5 - .string "Flag all clear$" - -Str_839BED4:: @ 0x839BED4 - .string "Flag all set$" - - .align 2 -gUnknown_Debug_839BEE4:: @ 0x839BEE4 - .4byte Str_839BEB8, DebugMenu_8077974+1 - .4byte Str_839BE94, DebugMenu_8077A20+1 - .4byte Str_839BEA5, DebugMenu_8077A40+1 - .4byte Str_839BED4, DebugMenu_8077934+1 - .4byte Str_839BEC5, DebugMenu_8077954+1 - -Str_839BF0C:: @ 0x839BF0C - .string "のこり {STR_VAR_1}ほ$" - -Str_839BF14:: @ 0x839BF14 - .string "{STR_VAR_1}\n" - .string "のこり {STR_VAR_2}ほ$" - -Str_839BF1F:: @ 0x839BF1F - .string "めのまえには\n" - .string "キューブが ありません!$" - -Str_839BF33:: @ 0x839BF33 - .string "ほすうをのこり1にする$" - -Str_839BF3F:: @ 0x839BF3F - .string "ボールをのこり1にする$" - -Str_839BF4B:: @ 0x839BF4B - .string "キューブおきば$" - -Str_839BF53:: @ 0x839BF53 - .string "ボールをのこり30に$" - -Str_839BF5E:: @ 0x839BF5E - .string "ほすうをのこり500に$" - .align 2 -gUnknown_Debug_839BF6C:: @ 0x839BF6C - .4byte Str_839BF4B, DebugMenu_8077B00+1 - .4byte Str_839BF5E, DebugMenu_8077ACC+1 - .4byte Str_839BF33, DebugMenu_8077AE8+1 - .4byte Str_839BF53, DebugMenu_8077A9C+1 - .4byte Str_839BF3F, DebugMenu_8077AB4+1 - gUnknown_Debug_839BF94:: @ 0x839BF94 .4byte gMoveNames + 13 * MOVE_CUT, DebugMenu_8077BB4+1 .4byte gMoveNames + 13 * MOVE_FLASH, DebugMenu_8077BC0+1 diff --git a/include/safari_zone.h b/include/safari_zone.h index 0bee08a95..08d635794 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -2,6 +2,7 @@ #define GUARD_SAFARI_ZONE_H extern u8 gNumSafariBalls; +extern u16 gSafariZoneStepCounter; bool32 GetSafariZoneFlag(void); void SetSafariZoneFlag(void); @@ -18,6 +19,6 @@ void SafariZoneGetPokeblockNameInFeeder(void); struct Pokeblock *unref_sub_80C8418(void); struct Pokeblock *SafariZoneGetActivePokeblock(void); void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index); -bool8 unref_sub_80C853C(void); +bool32 unref_sub_80C853C(void); #endif // GUARD_SAFARI_ZONE_H diff --git a/include/wild_encounter.h b/include/wild_encounter.h index 41ca31835..1b8b8dfc7 100644 --- a/include/wild_encounter.h +++ b/include/wild_encounter.h @@ -39,6 +39,7 @@ bool8 UpdateRepelCounter(void); u16 FeebasDebug_GetTrueNumberOfWaterTilesInMapThird(u8 arg0); void FeebasSeedRng(u16 seed); u16 FeebasRandom(void); +extern u8 gWildEncountersDisabled; #endif // DEBUG #endif // GUARD_WILD_ENCOUNTER_H diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 0328565c6..4663d01a6 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -29,6 +29,9 @@ #include "mori_debug_menu.h" #include "cable_club.h" #include "field_fadetransition.h" +#include "wild_encounter.h" +#include "battle_setup.h" +#include "safari_zone.h" // berry_blender.c extern void unref_sub_80524BC(void); @@ -42,6 +45,8 @@ void DebugMenu_80771EC(void); void DebugMenu_8077238(void); u8 DebugMenu_8077D78(const struct MenuAction *menuActions); void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 a2); +u8 DebugMenu_8077C14(void); +bool8 DebugMenu_8077DB4(void); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -1073,148 +1078,54 @@ void DebugMenu_807786C(u8 a0) Menu_PrintText(sp00 + 3 * a0, 26, 1); } -NAKED -void DebugMenu_80778A8() +u8 DebugMenu_80778A8(void) { - asm( - " push {r4, lr}\n" - " ldr r4, ._211 @ gMain\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._207 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n" - " ldrb r0, [r2]\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " strb r0, [r2]\n" - " ldrb r0, [r2]\n" - " bl DebugMenu_807786C\n" - "._207:\n" - " ldrh r1, [r4, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._208 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._209 @cond_branch\n" - "._208:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._210\n" - "._212:\n" - " .align 2, 0\n" - "._211:\n" - " .word gMain\n" - " .word sWildEncountersDisabled\n" - "._209:\n" - " mov r0, #0x0\n" - "._210:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + gWildEncountersDisabled ^= 1; + DebugMenu_807786C(gWildEncountersDisabled); + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; } -NAKED -u8 DebugMenu_ControlEncounter() +u8 DebugMenu_ControlEncounter(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._213 @ sWildEncountersDisabled\n" - " ldrb r0, [r0]\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._213 + 4 @ gMenuCallback\n" - " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._214:\n" - " .align 2, 0\n" - "._213:\n" - " .word sWildEncountersDisabled\n" - " .word gMenuCallback\n" - " .word DebugMenu_80778A8+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_807786C(gWildEncountersDisabled); + gMenuCallback = DebugMenu_80778A8; + return FALSE; } -NAKED u8 DebugMenu_UseHM() { - asm( - " ldr r1, ._215 @ gMenuCallback\n" - " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " bx lr\n" - "._216:\n" - " .align 2, 0\n" - "._215:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C14+1\n" - "\n" - ); + gMenuCallback = DebugMenu_8077C14; + return FALSE; } -NAKED -void DebugMenu_8077934() +u8 DebugMenu_8077934(void) { - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._218 @ gSaveBlock1\n" - " mov r2, #0x1\n" - "._217:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._217 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._219:\n" - " .align 2, 0\n" - "._218:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 1; + CloseMenu(); + return TRUE; } -NAKED -void DebugMenu_8077954() +u8 DebugMenu_8077954(void) { - asm( - " push {lr}\n" - " mov r1, #0x0\n" - " ldr r3, ._222 @ gSaveBlock1\n" - " mov r2, #0x0\n" - "._221:\n" - " add r0, r1, r3\n" - " strb r2, [r0]\n" - " add r1, r1, #0x1\n" - " cmp r1, #0x63\n" - " bls ._221 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._223:\n" - " .align 2, 0\n" - "._222:\n" - " .word gSaveBlock1+0x97a\n" - "\n" - ); + int i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.trainerRematches); i++) + gSaveBlock1.trainerRematches[i] = 0; + CloseMenu(); + return TRUE; } const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" @@ -1222,368 +1133,146 @@ const u8 Str_839BE6B[] = _("さいせんかのうトレーナー:{STR_VAR_1}\n" const u8 Str_839BE8D[] = _("いる"); const u8 Str_839BE90[] = _("いない"); -NAKED -void DebugMenu_8077974() +bool8 DebugMenu_8077974(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._226 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl IsRematchTrainerIn\n" - " cmp r0, #0\n" - " beq ._224 @cond_branch\n" - " ldr r0, ._226 + 4 @ gStringVar1\n" - " ldr r1, ._226 + 8 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._225\n" - "._227:\n" - " .align 2, 0\n" - "._226:\n" - " .word gSaveBlock1\n" - " .word gStringVar1\n" - " .word Str_839BE8D\n" - "._224:\n" - " ldr r0, ._230 @ gStringVar1\n" - " ldr r1, ._230 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._225:\n" - " ldr r1, ._230 + 8 @ gSaveBlock1\n" - " mov r0, #0x4\n" - " ldsb r0, [r1, r0]\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " ldrb r1, [r1, #0x5]\n" - " lsl r1, r1, #0x18\n" - " asr r1, r1, #0x18\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " bl DoesSomeoneWantRematchIn\n" - " cmp r0, #0\n" - " beq ._228 @cond_branch\n" - " ldr r0, ._230 + 12 @ gStringVar2\n" - " ldr r1, ._230 + 16 @ Str_839BE8D\n" - " bl StringCopy\n" - " b ._229\n" - "._231:\n" - " .align 2, 0\n" - "._230:\n" - " .word gStringVar1\n" - " .word Str_839BE90\n" - " .word gSaveBlock1\n" - " .word gStringVar2\n" - " .word Str_839BE8D\n" - "._228:\n" - " ldr r0, ._232 @ gStringVar2\n" - " ldr r1, ._232 + 4 @ Str_839BE90\n" - " bl StringCopy\n" - "._229:\n" - " ldr r0, ._232 + 8 @ Str_839BE6B\n" - " bl sub_8071F40\n" - " ldr r1, ._232 + 12 @ gMenuCallback\n" - " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._233:\n" - " .align 2, 0\n" - "._232:\n" - " .word gStringVar2\n" - " .word Str_839BE90\n" - " .word Str_839BE6B\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); + Menu_EraseScreen(); + if (IsRematchTrainerIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar1, Str_839BE8D); + else + StringCopy(gStringVar1, Str_839BE90); + if (DoesSomeoneWantRematchIn(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)) + StringCopy(gStringVar2, Str_839BE8D); + else + StringCopy(gStringVar2, Str_839BE90); + sub_8071F40(Str_839BE6B); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; } -NAKED -void DebugMenu_8077A20() +bool8 DebugMenu_8077A20(void) { - asm( - " push {lr}\n" - " ldr r0, ._234 @ gSaveBlock1\n" - " ldr r1, ._234 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0xff\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._235:\n" - " .align 2, 0\n" - "._234:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); + gSaveBlock1.trainerRematchStepCounter = 255; + CloseMenu(); + return TRUE; } -NAKED -void DebugMenu_8077A40() +bool8 DebugMenu_8077A40(void) { - asm( - " push {lr}\n" - " ldr r0, ._236 @ gSaveBlock1\n" - " ldr r1, ._236 + 4 @ 0x978\n" - " add r0, r0, r1\n" - " mov r1, #0x0\n" - " strh r1, [r0]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._237:\n" - " .align 2, 0\n" - "._236:\n" - " .word gSaveBlock1\n" - " .word 0x978\n" - "\n" - ); + gSaveBlock1.trainerRematchStepCounter = 0; + CloseMenu(); + return TRUE; } -NAKED -u8 DebugMenu_8077A60() +const u8 Str_839BE94[] = _("Max num of steps"); +const u8 Str_839BEA5[] = _("Clear num of steps"); +const u8 Str_839BEB8[] = _("See trainers"); +const u8 Str_839BEC5[] = _("Flag all clear"); +const u8 Str_839BED4[] = _("Flag all set"); + +const struct MenuAction gUnknown_Debug_839BEE4[] = { + {Str_839BEB8, DebugMenu_8077974}, + {Str_839BE94, DebugMenu_8077A20}, + {Str_839BEA5, DebugMenu_8077A40}, + {Str_839BED4, DebugMenu_8077934}, + {Str_839BEC5, DebugMenu_8077954} +}; + +u8 DebugMenu_8077A60(void) { - asm( - " push {lr}\n" - " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._239:\n" - " .align 2, 0\n" - "._238:\n" - " .word gUnknown_Debug_839BEE4\n" - "\n" - ); + return DebugMenu_8077D78(gUnknown_Debug_839BEE4); } -NAKED -u8 DebugMenu_RematchTrainers() +u8 DebugMenu_RematchTrainers(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n" - " mov r1, #0xd\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._240 + 4 @ gMenuCallback\n" - " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._241:\n" - " .align 2, 0\n" - "._240:\n" - " .word gUnknown_Debug_839BEE4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077A60+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, 5); + gMenuCallback = DebugMenu_8077A60; + return FALSE; } -NAKED -void DebugMenu_8077A9C() +bool8 DebugMenu_8077A9C(void) { - asm( - " push {lr}\n" - " ldr r1, ._242 @ gNumSafariBalls\n" - " mov r0, #0x1e\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._243:\n" - " .align 2, 0\n" - "._242:\n" - " .word gNumSafariBalls\n" - "\n" - ); + gNumSafariBalls = 30; + CloseMenu(); + return TRUE; } -NAKED -void DebugMenu_8077AB4() +bool8 DebugMenu_8077AB4() { - asm( - " push {lr}\n" - " ldr r1, ._244 @ gNumSafariBalls\n" - " mov r0, #0x1\n" - " strb r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._245:\n" - " .align 2, 0\n" - "._244:\n" - " .word gNumSafariBalls\n" - "\n" - ); + gNumSafariBalls = 1; + CloseMenu(); + return TRUE; } -NAKED -void DebugMenu_8077ACC() +bool8 DebugMenu_8077ACC() { - asm( - " push {lr}\n" - " ldr r1, ._246 @ gSafariZoneStepCounter\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x1\n" - " add r0, r2, #0\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._247:\n" - " .align 2, 0\n" - "._246:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); + gSafariZoneStepCounter = 500; + CloseMenu(); + return TRUE; } -NAKED -void DebugMenu_8077AE8() +bool8 DebugMenu_8077AE8() { - asm( - " push {lr}\n" - " ldr r1, ._248 @ gSafariZoneStepCounter\n" - " mov r0, #0x1\n" - " strh r0, [r1]\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._249:\n" - " .align 2, 0\n" - "._248:\n" - " .word gSafariZoneStepCounter\n" - "\n" - ); + gSafariZoneStepCounter = 1; + CloseMenu(); + return TRUE; } -NAKED -void DebugMenu_8077B00() +const u8 Str_839BF0C[] = _("のこり {STR_VAR_1}ほ"); +const u8 Str_839BF14[] = _("{STR_VAR_1}\n" + "のこり {STR_VAR_2}ほ"); +const u8 Str_839BF1F[] = _("めのまえには\n" + "キューブが ありません!"); + +bool8 DebugMenu_8077B00() { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl unref_sub_80C853C\n" - " cmp r0, #0\n" - " beq ._250 @cond_branch\n" - " ldr r0, ._252 @ Str_839BF14\n" - " bl sub_8071F40\n" - " b ._251\n" - "._253:\n" - " .align 2, 0\n" - "._252:\n" - " .word Str_839BF14\n" - "._250:\n" - " ldr r0, ._254 @ Str_839BF1F\n" - " bl sub_8071F40\n" - "._251:\n" - " ldr r1, ._254 + 4 @ gMenuCallback\n" - " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._255:\n" - " .align 2, 0\n" - "._254:\n" - " .word Str_839BF1F\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); + Menu_EraseScreen(); + if (unref_sub_80C853C()) + sub_8071F40(Str_839BF14); + else + sub_8071F40(Str_839BF1F); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; } -NAKED -void DebugMenu_8077B3C() +const u8 Str_839BF33[] = _("ほすうをのこり1にする"); +const u8 Str_839BF3F[] = _("ボールをのこり1にする"); +const u8 Str_839BF4B[] = _("キューブおきば"); +const u8 Str_839BF53[] = _("ボールをのこり30に"); +const u8 Str_839BF5E[] = _("ほすうをのこり500に"); + +const struct MenuAction gUnknown_Debug_839BF6C[] = { + {Str_839BF4B, DebugMenu_8077B00}, + {Str_839BF5E, DebugMenu_8077ACC}, + {Str_839BF33, DebugMenu_8077AE8}, + {Str_839BF53, DebugMenu_8077A9C}, + {Str_839BF3F, DebugMenu_8077AB4} +}; + +bool8 DebugMenu_8077B3C() { - asm( - " push {lr}\n" - " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._257:\n" - " .align 2, 0\n" - "._256:\n" - " .word gUnknown_Debug_839BF6C\n" - "\n" - ); + return DebugMenu_8077D78(gUnknown_Debug_839BF6C); } -NAKED u8 DebugMenu_Safari() { - asm( - " push {lr}\n" - " bl GetSafariZoneFlag\n" - " cmp r0, #0\n" - " beq ._258 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n" - " mov r1, #0xe\n" - " mov r2, #0x5\n" - " bl DebugMenu_8077D24\n" - " ldr r0, ._260 + 4 @ gStringVar1\n" - " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n" - " ldrh r1, [r1]\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._260 + 12 @ Str_839BF0C\n" - " bl sub_8071F40\n" - " ldr r1, ._260 + 16 @ gMenuCallback\n" - " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n" - " str r0, [r1]\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x0\n" - " b ._259\n" - "._261:\n" - " .align 2, 0\n" - "._260:\n" - " .word gUnknown_Debug_839BF6C\n" - " .word gStringVar1\n" - " .word gSafariZoneStepCounter\n" - " .word Str_839BF0C\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077B3C+1\n" - "._258:\n" - " bl CloseMenu\n" - " mov r0, #0x16\n" - " bl PlaySE\n" - " mov r0, #0x1\n" - "._259:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (!GetSafariZoneFlag()) + { + CloseMenu(); + PlaySE(SE_BOO); + return TRUE; + } + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, 5); + ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); + sub_8071F40(Str_839BF0C); + gMenuCallback = DebugMenu_8077B3C; + ScriptContext2_Enable(); + return FALSE; } NAKED -void DebugMenu_8077BB4() +bool8 DebugMenu_8077BB4() { asm( " push {lr}\n" @@ -1596,7 +1285,7 @@ void DebugMenu_8077BB4() } NAKED -void DebugMenu_8077BC0() +bool8 DebugMenu_8077BC0() { asm( " push {lr}\n" @@ -1609,7 +1298,7 @@ void DebugMenu_8077BC0() } NAKED -void DebugMenu_8077BCC() +bool8 DebugMenu_8077BCC() { asm( " push {lr}\n" @@ -1622,7 +1311,7 @@ void DebugMenu_8077BCC() } NAKED -void DebugMenu_8077BD8() +bool8 DebugMenu_8077BD8() { asm( " push {lr}\n" @@ -1635,7 +1324,7 @@ void DebugMenu_8077BD8() } NAKED -void DebugMenu_8077BE4() +bool8 DebugMenu_8077BE4() { asm( " push {lr}\n" @@ -1649,7 +1338,7 @@ void DebugMenu_8077BE4() } NAKED -void DebugMenu_8077BF4() +bool8 DebugMenu_8077BF4() { asm( " push {lr}\n" @@ -1662,7 +1351,7 @@ void DebugMenu_8077BF4() } NAKED -void DebugMenu_8077C00() +bool8 DebugMenu_8077C00() { asm( " push {lr}\n" @@ -1681,7 +1370,7 @@ void DebugMenu_8077C00() } NAKED -void DebugMenu_8077C14() +u8 DebugMenu_8077C14(void) { asm( " push {lr}\n" @@ -1926,7 +1615,7 @@ u8 DebugMenu_8077D78(const struct MenuAction *menuActions) } NAKED -void DebugMenu_8077DB4() +bool8 DebugMenu_8077DB4(void) { asm( " push {lr}\n" @@ -1953,7 +1642,7 @@ void DebugMenu_8077DB4() } NAKED -void DebugMenu_8077DD8() +bool8 DebugMenu_8077DD8() { asm( " push {r4, r5, lr}\n" @@ -2020,7 +1709,7 @@ void DebugMenu_8077DD8() } NAKED -void DebugMenu_8077E40() +bool8 DebugMenu_8077E40() { asm( " push {r4, lr}\n" @@ -2835,7 +2524,7 @@ u8 DebugMenu_MiragaIslandRND() } NAKED -void DebugMenu_80783C8() +bool8 DebugMenu_80783C8() { asm( " push {r4, lr}\n" @@ -2927,7 +2616,7 @@ u8 DebugMenu_ToggleClearFlag() } NAKED -void DebugMenu_8078464() +bool8 DebugMenu_8078464() { asm( " push {r4, lr}\n" @@ -3009,7 +2698,7 @@ u8 DebugMenu_OpenWeatherEvents() } NAKED -void DebugMenu_80784E8() +bool8 DebugMenu_80784E8() { asm( " push {lr}\n" @@ -3171,7 +2860,7 @@ void DebugMenu_8078550() } NAKED -void DebugMenu_807860C() +bool8 DebugMenu_807860C() { asm( " push {r4, r5, lr}\n" @@ -3372,7 +3061,7 @@ void DebugMenu_8078714() } NAKED -void DebugMenu_8078758() +bool8 DebugMenu_8078758() { asm( " push {r4, lr}\n" @@ -3391,7 +3080,7 @@ void DebugMenu_8078758() } NAKED -void DebugMenu_8078774() +bool8 DebugMenu_8078774() { asm( " push {lr}\n" @@ -3410,7 +3099,7 @@ void DebugMenu_8078774() } NAKED -void DebugMenu_8078788() +bool8 DebugMenu_8078788() { asm( " push {lr}\n" @@ -3429,7 +3118,7 @@ void DebugMenu_8078788() } NAKED -void DebugMenu_807879C() +bool8 DebugMenu_807879C() { asm( " push {lr}\n" @@ -3448,7 +3137,7 @@ void DebugMenu_807879C() } NAKED -void DebugMenu_80787B0() +bool8 DebugMenu_80787B0() { asm( " push {lr}\n" @@ -4192,7 +3881,7 @@ u8 DebugMenu_CheckPKBLCK() } NAKED -void DebugMenu_8078C80() +bool8 DebugMenu_8078C80() { asm( " push {lr}\n" @@ -4218,7 +3907,7 @@ void DebugMenu_8078C80() } NAKED -void DebugMenu_8078CA8() +bool8 DebugMenu_8078CA8() { asm( " push {lr}\n" @@ -4257,7 +3946,7 @@ void DebugMenu_8078CA8() } NAKED -void DebugMenu_8078CE4() +bool8 DebugMenu_8078CE4() { asm( " push {lr}\n" @@ -4301,7 +3990,7 @@ void DebugMenu_8078CE4() } NAKED -void DebugMenu_8078D30() +bool8 DebugMenu_8078D30() { asm( " push {r4, r5, r6, lr}\n" @@ -4343,7 +4032,7 @@ void DebugMenu_8078D30() } NAKED -void DebugMenu_8078D7C() +bool8 DebugMenu_8078D7C() { asm( " push {lr}\n" @@ -4369,7 +4058,7 @@ void DebugMenu_8078D7C() } NAKED -void DebugMenu_8078DA4() +bool8 DebugMenu_8078DA4() { asm( " push {lr}\n" @@ -4422,7 +4111,7 @@ u8 DebugMenu_MeTooBackupMan() } NAKED -void DebugMenu_8078DF0() +bool8 DebugMenu_8078DF0() { asm( " push {lr}\n" @@ -4441,7 +4130,7 @@ void DebugMenu_8078DF0() } NAKED -void DebugMenu_8078E04() +bool8 DebugMenu_8078E04() { asm( " push {r4, r5, r6, lr}\n" @@ -4484,7 +4173,7 @@ void DebugMenu_8078E04() } NAKED -void DebugMenu_8078E40() +bool8 DebugMenu_8078E40() { asm( " push {r4, r5, r6, lr}\n" diff --git a/src/safari_zone.c b/src/safari_zone.c index f371b08b3..f4f1d96a6 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -236,7 +236,7 @@ static void DecrementFeederStepCounters(void) } } -bool8 unref_sub_80C853C(void) +bool32 unref_sub_80C853C(void) { SafariZoneGetPokeblockNameInFeeder(); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index ddad43a56..7e5dac594 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -3698,7 +3698,7 @@ const u16 gRoute119WaterTileData[] = extern u16 gSpecialVar_Result; extern u8 S_RepelWoreOff[]; -EWRAM_DATA u8 sWildEncountersDisabled = 0; +EWRAM_DATA u8 gWildEncountersDisabled = 0; EWRAM_DATA static u32 sFeebasRngValue = 0; #define NUM_FEEBAS_SPOTS 6 @@ -3712,7 +3712,7 @@ static void ApplyCleanseTagEncounterRateMod(u32 *encRate); void DisableWildEncounters(bool8 disabled) { - sWildEncountersDisabled = disabled; + gWildEncountersDisabled = disabled; } static u16 GetRoute119WaterTileNum(s16 x, s16 y, u8 section) @@ -4110,7 +4110,7 @@ bool8 StandardWildEncounter(u16 a, u16 b) u16 headerNum; struct Roamer *roamer; - if (sWildEncountersDisabled == TRUE) + if (gWildEncountersDisabled == TRUE) return 0; else { -- cgit v1.2.3 From 676db333866efd16d17aeedc507f53f3db2206ab Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 11:37:32 -0400 Subject: through DebugMenu_8077C14 --- data/start_menu_debug.s | 10 --- include/debug.h | 3 + include/fldeff_cut.h | 1 + include/fldeff_flash.h | 1 + include/fldeff_secretpower.h | 6 ++ include/fldeff_strength.h | 6 ++ include/pokemon_menu.h | 1 + include/rom6.h | 1 + src/debug/start_menu_debug.c | 166 +++++++++++++++---------------------------- 9 files changed, 75 insertions(+), 120 deletions(-) create mode 100644 include/fldeff_secretpower.h create mode 100644 include/fldeff_strength.h diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index d8099cbd2..3cabb4bf4 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -7,16 +7,6 @@ .section .rodata .align 2 -gUnknown_Debug_839BF94:: @ 0x839BF94 - .4byte gMoveNames + 13 * MOVE_CUT, DebugMenu_8077BB4+1 - .4byte gMoveNames + 13 * MOVE_FLASH, DebugMenu_8077BC0+1 - .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, DebugMenu_8077BCC+1 - .4byte gMoveNames + 13 * MOVE_STRENGTH, DebugMenu_8077BD8+1 - .4byte gMoveNames + 13 * MOVE_SURF, debug_sub_80B0770+1 - .4byte gMoveNames + 13 * MOVE_FLY, debug_sub_80B07B0+1 - .4byte gMoveNames + 13 * MOVE_WATERFALL, DebugMenu_8077BE4+1 - .4byte gMoveNames + 13 * MOVE_DIVE, debug_sub_80B0800+1 - .4byte gMoveNames + 13 * MOVE_SECRET_POWER, DebugMenu_8077BF4+1 Str_839BFDC:: @ 0x839BFDC .string " じかん ふん びょう$" diff --git a/include/debug.h b/include/debug.h index d6bd363bf..d725b349f 100644 --- a/include/debug.h +++ b/include/debug.h @@ -33,6 +33,9 @@ int unref_sub_814A414(void); // kagaya_debug_menu bool8 InitKagayaDebugMenu_A(void); +bool8 debug_sub_80B0770(void); +bool8 debug_sub_80B07B0(void); +bool8 debug_sub_80B0800(void); // nohara_debug_menu bool8 InitNoharaDebugMenu(void); diff --git a/include/fldeff_cut.h b/include/fldeff_cut.h index 0a5261468..6230b822a 100644 --- a/include/fldeff_cut.h +++ b/include/fldeff_cut.h @@ -9,5 +9,6 @@ void sub_80A28F4(s16, s16); void objc_8097BBC(struct Sprite *sprite); void sub_80A2AB8(void); void sub_80A2B00(void); // unknown args +void debug_sub_80AFEE4(void); #endif // GUARD_FLDEFF_CUT_H diff --git a/include/fldeff_flash.h b/include/fldeff_flash.h index 546a7f5dc..3b1fbf812 100644 --- a/include/fldeff_flash.h +++ b/include/fldeff_flash.h @@ -4,5 +4,6 @@ void sub_810CC80(void); u8 sub_810CDB8(u8, u8); u8 fade_type_for_given_maplight_pair(u8, u8); +void debug_sub_8122080(void); #endif // GUARD_FLDEFF_FLASH_H diff --git a/include/fldeff_secretpower.h b/include/fldeff_secretpower.h new file mode 100644 index 000000000..be6bebf55 --- /dev/null +++ b/include/fldeff_secretpower.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FLDEFF_SECRETPOWER_H +#define GUARD_FLDEFF_SECRETPOWER_H + +void debug_sub_80D93F4(void); + +#endif //GUARD_FLDEFF_SECRETPOWER_H diff --git a/include/fldeff_strength.h b/include/fldeff_strength.h new file mode 100644 index 000000000..9e324e057 --- /dev/null +++ b/include/fldeff_strength.h @@ -0,0 +1,6 @@ +#ifndef GUARD_FLDEFF_STRENGTH_H +#define GUARD_FLDEFF_STRENGTH_H + +void debug_sub_8130318(void); + +#endif //GUARD_FLDEFF_STRENGTH_H diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h index 57a313d89..313877caa 100644 --- a/include/pokemon_menu.h +++ b/include/pokemon_menu.h @@ -47,5 +47,6 @@ void sub_808B020(void); void sub_808B0C0(u8 taskID); void sub_808B508(u8); void sub_808B564(void); +void debug_sub_80986AC(void); #endif // GUARD_POKEMON_MENU_H diff --git a/include/rom6.h b/include/rom6.h index 8c3691624..67fc7a18a 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -5,5 +5,6 @@ extern struct MapPosition gUnknown_0203923C; bool8 npc_before_player_of_type(u8); u8 oei_task_add(void); +void debug_sub_8120968(void); #endif diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 4663d01a6..35f4f3f57 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -2,6 +2,7 @@ #include "global.h" #include "constants/songs.h" +#include "constants/moves.h" #include "battle.h" #include "debug.h" #include "link.h" @@ -32,6 +33,13 @@ #include "wild_encounter.h" #include "battle_setup.h" #include "safari_zone.h" +#include "fldeff_cut.h" +#include "fldeff_flash.h" +#include "rom6.h" +#include "fldeff_strength.h" +#include "pokemon_menu.h" +#include "fldeff_secretpower.h" +#include "data2.h" // berry_blender.c extern void unref_sub_80524BC(void); @@ -44,7 +52,7 @@ void DebugMenu_807719C(void); void DebugMenu_80771EC(void); void DebugMenu_8077238(void); u8 DebugMenu_8077D78(const struct MenuAction *menuActions); -void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 a2); +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 itemCount); u8 DebugMenu_8077C14(void); bool8 DebugMenu_8077DB4(void); @@ -882,7 +890,7 @@ u8 DebugMenu_807750C(void) u8 DebugMenu_SetRamBerry(void) { - DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, 5); + DebugMenu_8077D24(gUnknown_Debug_839BE24, 12, ARRAY_COUNT(gUnknown_Debug_839BE24)); gMenuCallback = DebugMenu_807750C; return FALSE; } @@ -1185,7 +1193,7 @@ u8 DebugMenu_8077A60(void) u8 DebugMenu_RematchTrainers(void) { Menu_EraseScreen(); - DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, 5); + DebugMenu_8077D24(gUnknown_Debug_839BEE4, 13, ARRAY_COUNT(gUnknown_Debug_839BEE4)); gMenuCallback = DebugMenu_8077A60; return FALSE; } @@ -1197,21 +1205,21 @@ bool8 DebugMenu_8077A9C(void) return TRUE; } -bool8 DebugMenu_8077AB4() +bool8 DebugMenu_8077AB4(void) { gNumSafariBalls = 1; CloseMenu(); return TRUE; } -bool8 DebugMenu_8077ACC() +bool8 DebugMenu_8077ACC(void) { gSafariZoneStepCounter = 500; CloseMenu(); return TRUE; } -bool8 DebugMenu_8077AE8() +bool8 DebugMenu_8077AE8(void) { gSafariZoneStepCounter = 1; CloseMenu(); @@ -1224,7 +1232,7 @@ const u8 Str_839BF14[] = _("{STR_VAR_1}\n" const u8 Str_839BF1F[] = _("めのまえには\n" "キューブが ありません!"); -bool8 DebugMenu_8077B00() +bool8 DebugMenu_8077B00(void) { Menu_EraseScreen(); if (unref_sub_80C853C()) @@ -1249,12 +1257,12 @@ const struct MenuAction gUnknown_Debug_839BF6C[] = { {Str_839BF3F, DebugMenu_8077AB4} }; -bool8 DebugMenu_8077B3C() +bool8 DebugMenu_8077B3C(void) { return DebugMenu_8077D78(gUnknown_Debug_839BF6C); } -u8 DebugMenu_Safari() +u8 DebugMenu_Safari(void) { if (!GetSafariZoneFlag()) { @@ -1263,7 +1271,7 @@ u8 DebugMenu_Safari() return TRUE; } Menu_EraseScreen(); - DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, 5); + DebugMenu_8077D24(gUnknown_Debug_839BF6C, 14, ARRAY_COUNT(gUnknown_Debug_839BF6C)); ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); sub_8071F40(Str_839BF0C); gMenuCallback = DebugMenu_8077B3C; @@ -1271,128 +1279,66 @@ u8 DebugMenu_Safari() return FALSE; } -NAKED -bool8 DebugMenu_8077BB4() +bool8 DebugMenu_8077BB4(void) { - asm( - " push {lr}\n" - " bl debug_sub_80AFEE4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_80AFEE4(); + return TRUE; } -NAKED -bool8 DebugMenu_8077BC0() +bool8 DebugMenu_8077BC0(void) { - asm( - " push {lr}\n" - " bl debug_sub_8122080\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_8122080(); + return TRUE; } -NAKED -bool8 DebugMenu_8077BCC() +bool8 DebugMenu_8077BCC(void) { - asm( - " push {lr}\n" - " bl debug_sub_8120968\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_8120968(); + return TRUE; } -NAKED -bool8 DebugMenu_8077BD8() +bool8 DebugMenu_8077BD8(void) { - asm( - " push {lr}\n" - " bl debug_sub_8130318\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_8130318(); + return TRUE; } -NAKED -bool8 DebugMenu_8077BE4() +bool8 DebugMenu_8077BE4(void) { - asm( - " push {lr}\n" - " bl debug_sub_80986AC\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_80986AC(); + CloseMenu(); + return TRUE; } -NAKED -bool8 DebugMenu_8077BF4() +bool8 DebugMenu_8077BF4(void) { - asm( - " push {lr}\n" - " bl debug_sub_80D93F4\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + debug_sub_80D93F4(); + return TRUE; } -NAKED -bool8 DebugMenu_8077C00() +const struct MenuAction gUnknown_Debug_839BF94[] = { + {gMoveNames[MOVE_CUT], DebugMenu_8077BB4}, + {gMoveNames[MOVE_FLASH], DebugMenu_8077BC0}, + {gMoveNames[MOVE_ROCK_SMASH], DebugMenu_8077BCC}, + {gMoveNames[MOVE_STRENGTH], DebugMenu_8077BD8}, + {gMoveNames[MOVE_SURF], debug_sub_80B0770}, + {gMoveNames[MOVE_FLY], debug_sub_80B07B0}, + {gMoveNames[MOVE_WATERFALL], DebugMenu_8077BE4}, + {gMoveNames[MOVE_DIVE], debug_sub_80B0800}, + {gMoveNames[MOVE_SECRET_POWER], DebugMenu_8077BF4} +}; + +bool8 DebugMenu_8077C00(void) { - asm( - " push {lr}\n" - " ldr r0, ._262 @ gUnknown_Debug_839BF94\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._263:\n" - " .align 2, 0\n" - "._262:\n" - " .word gUnknown_Debug_839BF94\n" - "\n" - ); + return DebugMenu_8077D78(gUnknown_Debug_839BF94); } -NAKED u8 DebugMenu_8077C14(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._264 @ gUnknown_Debug_839BF94\n" - " mov r1, #0xa\n" - " mov r2, #0x9\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._264 + 4 @ gMenuCallback\n" - " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._265:\n" - " .align 2, 0\n" - "._264:\n" - " .word gUnknown_Debug_839BF94\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077C00+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839BF94, 10, ARRAY_COUNT(gUnknown_Debug_839BF94)); + gMenuCallback = DebugMenu_8077C00; + return FALSE; } NAKED @@ -1530,7 +1476,7 @@ void debug_sub_8077CF4() } NAKED -void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 a2) +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 itemCount) { asm( " push {r4, r5, r6, lr}\n" -- cgit v1.2.3 From 0d5c05be8f2013c3ed2e9523fac788bac3607bd1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 12:41:53 -0400 Subject: Nonmatching DebugMenu_8077C3C --- data/start_menu_debug.s | 6 -- src/debug/start_menu_debug.c | 224 +++++++++++++++++++++++++------------------ 2 files changed, 129 insertions(+), 101 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index 3cabb4bf4..c8371893f 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -8,12 +8,6 @@ .align 2 -Str_839BFDC:: @ 0x839BFDC - .string " じかん ふん びょう$" - -gUnknown_Debug_839BFE8:: - .byte 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00 - Str_839C008: @ 0x839C008 gDebug0x839C008:: .string "Which item?$" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 35f4f3f57..ad2e3a1a4 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -314,10 +314,10 @@ extern const u8 Str_839BD2C[]; extern const u8 Str_839BD4C[]; static u8 gUnknown_030006B8; -UNUSED static u32 gUnknown_030006BC; +UNUSED static const s32 * gUnknown_030006BC; static u8 gUnknown_030006C0; static u8 gUnknown_030006C1; -static const u8 *gUnknown_030006C4; +static const u8 * gUnknown_030006C4; static u8 gUnknown_030006C8; void debug_sub_8076AC8(u8 a) @@ -1341,108 +1341,142 @@ u8 DebugMenu_8077C14(void) return FALSE; } -NAKED -void DebugMenu_8077C3C() +const u8 Str_839BFDC[] = _(" じかん ふん びょう"); + +const s32 gUnknown_Debug_839BFE8[] = { + 99, 10, 2, 23, + 99, 10, 2, 26 +}; + +#ifdef NONMATCHING +void DebugMenu_8077C3C(const char * a0, u8 * a1) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov sl, r0\n" - " add r7, r1, #0\n" - " ldr r0, ._271 @ gUnknown_030006BC\n" - " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" - " str r1, [r0]\n" - " mov r1, #0x0\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " strb r1, [r7]\n" - " add r7, r7, #0x1\n" - " mov r3, #0x0\n" - " mov r8, r0\n" + // Register allocation swap + // Intended: r7 = a1, r6 = gUnknown_030006BC[2] + // Observed: r6 = a1, r7 = gUnknown_030006BC[2] + + int i; + + gUnknown_030006BC = gUnknown_Debug_839BFE8; + *a1++ = CHAR_SPACE; + *a1++ = CHAR_SPACE; + + for (i = 0; i < 2; i++, gUnknown_030006BC += 4) + { + u32 r5 = 0; + int r2; + int r4; + for (r2 = gUnknown_030006BC[1], r4 = 0; r4 < gUnknown_030006BC[2]; r4++, r2 /= 10) + r5 += (a0[gUnknown_030006BC[3] + r4] - '0') * r2; + if (gUnknown_030006BC[0] < r5) + r5 = gUnknown_030006BC[0]; + a1 = ConvertIntToDecimalStringN(a1, r5, STR_CONV_MODE_LEADING_ZEROS, gUnknown_030006BC[2]); + } + a1[0] = a0[29] - 'A' + CHAR_A; + if (a1[0] > 0xf6) + a1[0] = 0xf6; + a1[1] = EOS; +} +#else +NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) +{ + asm("\tpush\t{r4, r5, r6, r7, lr}\n" + "\tmov\tr7, sl\n" + "\tmov\tr6, r9\n" + "\tmov\tr5, r8\n" + "\tpush\t{r5, r6, r7}\n" + "\tadd\tsp, sp, #0xfffffffc\n" + "\tmov\tsl, r0\n" + "\tadd\tr7, r1, #0\n" + "\tldr\tr0, ._271 @ gUnknown_030006BC\n" + "\tldr\tr1, ._271 + 4 @ gUnknown_Debug_839BFE8\n" + "\tstr\tr1, [r0]\n" + "\tmov\tr1, #0x0\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tstrb\tr1, [r7]\n" + "\tadd\tr7, r7, #0x1\n" + "\tmov\tr3, #0x0\n" + "\tmov\tr8, r0\n" "._269:\n" - " mov r5, #0x0\n" - " ldr r1, ._271 @ gUnknown_030006BC\n" - " ldr r0, [r1]\n" - " ldr r2, [r0, #0x4]\n" - " mov r4, #0x0\n" - " ldr r1, [r0, #0x8]\n" - " add r3, r3, #0x1\n" - " mov r9, r3\n" - " cmp r5, r1\n" - " bge ._266 @cond_branch\n" - " add r3, r0, #0\n" - " add r6, r1, #0\n" + "\tmov\tr5, #0x0\n" + "\tldr\tr1, ._271 @ gUnknown_030006BC\n" + "\tldr\tr0, [r1]\n" + "\tldr\tr2, [r0, #0x4]\n" + "\tmov\tr4, #0x0\n" + "\tldr\tr1, [r0, #0x8]\n" + "\tadd\tr3, r3, #0x1\n" + "\tmov\tr9, r3\n" + "\tcmp\tr5, r1\n" + "\tbge\t._266\t@cond_branch\n" + "\tadd\tr3, r0, #0\n" + "\tadd\tr6, r1, #0\n" "._267:\n" - " ldr r0, [r3, #0xc]\n" - " add r0, r0, r4\n" - " add r0, r0, sl\n" - " ldrb r0, [r0]\n" - " sub r0, r0, #0x30\n" - " mul r0, r0, r2\n" - " add r5, r5, r0\n" - " add r4, r4, #0x1\n" - " add r0, r2, #0\n" - " mov r1, #0xa\n" - " str r3, [sp]\n" - " bl __divsi3\n" - " add r2, r0, #0\n" - " ldr r3, [sp]\n" - " cmp r4, r6\n" - " blt ._267 @cond_branch\n" + "\tldr\tr0, [r3, #0xc]\n" + "\tadd\tr0, r0, r4\n" + "\tadd r0, r0, sl\n" + "\tldrb\tr0, [r0]\n" + "\tsub\tr0, r0, #0x30\n" + "\tmul\tr0, r0, r2\n" + "\tadd\tr5, r5, r0\n" + "\tadd\tr4, r4, #0x1\n" + "\tadd\tr0, r2, #0\n" + "\tmov\tr1, #0xa\n" + "\tstr\tr3, [sp]\n" + "\tbl\t__divsi3\n" + "\tadd\tr2, r0, #0\n" + "\tldr\tr3, [sp]\n" + "\tcmp\tr4, r6\n" + "\tblt\t._267\t@cond_branch\n" "._266:\n" - " mov r0, r8\n" - " ldr r1, [r0]\n" - " ldr r0, [r1]\n" - " cmp r0, r5\n" - " bcs ._268 @cond_branch\n" - " add r5, r0, #0\n" + "\tmov\tr0, r8\n" + "\tldr\tr1, [r0]\n" + "\tldr\tr0, [r1]\n" + "\tcmp\tr0, r5\n" + "\tbcs\t._268\t@cond_branch\n" + "\tadd\tr5, r0, #0\n" "._268:\n" - " ldrb r3, [r1, #0x8]\n" - " add r0, r7, #0\n" - " add r1, r5, #0\n" - " mov r2, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r7, r0, #0\n" - " mov r3, r9\n" - " mov r1, r8\n" - " ldr r0, [r1]\n" - " add r0, r0, #0x10\n" - " str r0, [r1]\n" - " cmp r3, #0x1\n" - " ble ._269 @cond_branch\n" - " mov r1, sl\n" - " ldrb r0, [r1, #0x1d]\n" - " add r0, r0, #0x7a\n" - " strb r0, [r7]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0xf6\n" - " bls ._270 @cond_branch\n" - " mov r0, #0xf6\n" - " strb r0, [r7]\n" + "\tldrb\tr3, [r1, #0x8]\n" + "\tadd\tr0, r7, #0\n" + "\tadd\tr1, r5, #0\n" + "\tmov\tr2, #0x2\n" + "\tbl\tConvertIntToDecimalStringN\n" + "\tadd\tr7, r0, #0\n" + "\tmov\tr3, r9\n" + "\tmov\tr1, r8\n" + "\tldr\tr0, [r1]\n" + "\tadd\tr0, r0, #0x10\n" + "\tstr\tr0, [r1]\n" + "\tcmp\tr3, #0x1\n" + "\tble\t._269\t@cond_branch\n" + "\tmov\tr1, sl\n" + "\tldrb\tr0, [r1, #0x1d]\n" + "\tadd\tr0, r0, #0x7a\n" + "\tstrb\tr0, [r7]\n" + "\tlsl\tr0, r0, #0x18\n" + "\tlsr\tr0, r0, #0x18\n" + "\tcmp\tr0, #0xf6\n" + "\tbls\t._270\t@cond_branch\n" + "\tmov\tr0, #0xf6\n" + "\tstrb\tr0, [r7]\n" "._270:\n" - " mov r0, #0xff\n" - " strb r0, [r7, #0x1]\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" + "\tmov\tr0, #0xff\n" + "\tstrb\tr0, [r7, #0x1]\n" + "\tadd\tsp, sp, #0x4\n" + "\tpop\t{r3, r4, r5}\n" + "\tmov\tr8, r3\n" + "\tmov\tr9, r4\n" + "\tmov\tsl, r5\n" + "\tpop\t{r4, r5, r6, r7}\n" + "\tpop\t{r0}\n" + "\tbx\tr0\n" "._272:\n" - " .align 2, 0\n" + "\t.align\t2, 0\n" "._271:\n" - " .word gUnknown_030006BC \n" - " .word gUnknown_Debug_839BFE8\n" - "\n" - ); + "\t.word\tgUnknown_030006BC \n" + "\t.word\tgUnknown_Debug_839BFE8\n"); } +#endif NAKED void debug_sub_8077CF4() -- cgit v1.2.3 From bac8127928eb5f19245b49449ad423f853a4d7ed Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 15:52:49 -0400 Subject: through DebugMenu_8078254 --- data/start_menu_debug.s | 24 -- include/global.h | 4 +- include/main.h | 2 + src/debug/start_menu_debug.c | 987 ++++++++++--------------------------------- 4 files changed, 229 insertions(+), 788 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index c8371893f..d22e6efb4 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,30 +6,6 @@ .section .rodata - .align 2 - -Str_839C008: @ 0x839C008 -gDebug0x839C008:: - .string "Which item?$" - -Str_839C014:: @ 0x839C014 - .string "How many?$" - -Str_839C01E:: @ 0x839C01E - .string "にがおえ ばんごう\n" - .string "ポケモンナンバー\n" - .string "ポケモンめい\n" - .string "ブリーダーめい\n" - .string "しゅるい\n" - .string "こせいらんすう$" - -Str_839C04D:: @ 0x839C04D - .string "データなし$" - -Str_839C053:: @ 0x839C053 - .string "Miracle Island emerged\n" - .string "Random numbers:{STR_VAR_1}$" - Str_839C07C:: @ 0x839C07C .string "{STR_VAR_1}:{STR_VAR_2}\n" .string "{STR_VAR_3}$" diff --git a/include/global.h b/include/global.h index 4437b7feb..b61488545 100644 --- a/include/global.h +++ b/include/global.h @@ -612,8 +612,8 @@ struct ContestWinner /*0x04*/ u32 otId; // otId /*0x08*/ u16 species; // species /*0x0A*/ u8 contestCategory; - /*0x0B*/ u8 nickname[0x16-0xB]; - /*0x16*/ u8 trainerName[0x20-0x16]; + /*0x0B*/ u8 nickname[11]; + /*0x16*/ u8 trainerName[8]; }; // there should be enough flags for all 412 slots diff --git a/include/main.h b/include/main.h index 78403225e..f348e48f8 100644 --- a/include/main.h +++ b/include/main.h @@ -64,4 +64,6 @@ void InitFlashTimer(void); void DoSoftReset(void); void ClearPokemonCrySongs(void); +extern const char BuildDateTime[]; + #endif // GUARD_MAIN_H diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index ad2e3a1a4..43d13ae9c 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -3,6 +3,7 @@ #include "global.h" #include "constants/songs.h" #include "constants/moves.h" +#include "constants/items.h" #include "battle.h" #include "debug.h" #include "link.h" @@ -40,21 +41,27 @@ #include "pokemon_menu.h" #include "fldeff_secretpower.h" #include "data2.h" +#include "item.h" // berry_blender.c extern void unref_sub_80524BC(void); void debug_sub_8076BB4(u8); -void debug_sub_8077CF4(); +void debug_sub_8077CF4(u8 x, u8 y); u8 DebugMenu_807706C(void); u8 DebugMenu_807709C(void); void DebugMenu_807719C(void); void DebugMenu_80771EC(void); void DebugMenu_8077238(void); u8 DebugMenu_8077D78(const struct MenuAction *menuActions); -void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 itemCount); +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount); u8 DebugMenu_8077C14(void); bool8 DebugMenu_8077DB4(void); +void DebugMenu_8077EAC(void); +void DebugMenu_8077F40(u8 taskId); +void DebugMenu_8077F7C(u8 taskId); +void DebugMenu_8077FFC(u8 taskId); +void DebugMenu_807806C(u8 taskId); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -1478,819 +1485,272 @@ NAKED void DebugMenu_8077C3C(const char * a0, u8 * a1) } #endif -NAKED -void debug_sub_8077CF4() +void debug_sub_8077CF4(u8 x, u8 y) { - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " ldr r0, ._273 @ BuildDateTime\n" - " ldr r6, ._273 + 4 @ gStringVar4\n" - " add r1, r6, #0\n" - " bl DebugMenu_8077C3C\n" - " add r0, r6, #0\n" - " add r1, r4, #0\n" - " add r2, r5, #0\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._274:\n" - " .align 2, 0\n" - "._273:\n" - " .word BuildDateTime\n" - " .word gStringVar4\n" - "\n" - ); + DebugMenu_8077C3C(BuildDateTime, gStringVar4); + Menu_PrintText(gStringVar4, x, y); } -NAKED -void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 a1, u8 itemCount) +void DebugMenu_8077D24(const struct MenuAction *menuAction, u8 width, u8 itemCount) { - asm( - " push {r4, r5, r6, lr}\n" - " add sp, sp, #0xfffffff8\n" - " add r6, r0, #0\n" - " add r4, r1, #0\n" - " add r5, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " lsl r5, r5, #0x18\n" - " lsr r5, r5, #0x18\n" - " bl Menu_EraseScreen\n" - " lsl r3, r5, #0x1\n" - " add r3, r3, #0x1\n" - " lsl r3, r3, #0x18\n" - " lsr r3, r3, #0x18\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl Menu_DrawStdWindowFrame\n" - " mov r0, #0x1\n" - " mov r1, #0x1\n" - " add r2, r5, #0\n" - " add r3, r6, #0\n" - " bl Menu_PrintItems\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " sub r4, r4, #0x1\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " str r4, [sp, #0x4]\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " add r3, r5, #0\n" - " bl InitMenu\n" - " add sp, sp, #0x8\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, width, 2 * itemCount + 1); + Menu_PrintItems(1, 1, itemCount, menuAction); + InitMenu(0, 1, 1, itemCount, 0, width - 1); } -NAKED u8 DebugMenu_8077D78(const struct MenuAction *menuActions) { - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " bl Menu_ProcessInput\n" - " lsl r0, r0, #0x18\n" - " asr r4, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r4, r0\n" - " beq ._275 @cond_branch\n" - " add r0, r0, #0x1\n" - " cmp r4, r0\n" - " beq ._276 @cond_branch\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._278 @ gMenuCallback\n" - " lsl r1, r4, #0x3\n" - " add r1, r1, r5\n" - " ldr r1, [r1, #0x4]\n" - " str r1, [r0]\n" - "._275:\n" - " mov r0, #0x0\n" - " b ._277\n" - "._279:\n" - " .align 2, 0\n" - "._278:\n" - " .word gMenuCallback\n" - "._276:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._277:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + s8 input = Menu_ProcessInput(); + switch (input) + { + default: + Menu_EraseScreen(); + gMenuCallback = menuActions[input].func; + return FALSE; + case -2: + return FALSE; + case -1: + CloseMenu(); + return TRUE; + } } -NAKED bool8 DebugMenu_8077DB4(void) { - asm( - " push {lr}\n" - " ldr r0, ._282 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._280 @cond_branch\n" - " mov r0, #0x0\n" - " b ._281\n" - "._283:\n" - " .align 2, 0\n" - "._282:\n" - " .word gMain\n" - "._280:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._281:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; } -NAKED -bool8 DebugMenu_8077DD8() +bool32 DebugMenu_8077DD8(s16 * a0, s32 a1, s32 a2, u16 a3) { - asm( - " push {r4, r5, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " lsl r3, r3, #0x10\n" - " lsr r3, r3, #0x10\n" - " add r1, r3, #0\n" - " mov r0, #0x80\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._284 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " b ._285\n" - "._284:\n" - " mov r0, #0x40\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._286 @cond_branch\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " b ._287\n" - "._286:\n" - " mov r0, #0x20\n" - " and r0, r0, r3\n" - " cmp r0, #0\n" - " beq ._288 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0xa\n" - "._285:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r5\n" - " bge ._293 @cond_branch\n" - " strh r2, [r4]\n" - " b ._293\n" - "._288:\n" - " mov r0, #0x10\n" - " and r1, r1, r0\n" - " cmp r1, #0\n" - " bne ._291 @cond_branch\n" - " mov r0, #0x0\n" - " b ._292\n" - "._291:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0xa\n" - "._287:\n" - " strh r0, [r4]\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, r2\n" - " ble ._293 @cond_branch\n" - " strh r5, [r4]\n" - "._293:\n" - " mov r0, #0x1\n" - "._292:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (a3 & DPAD_DOWN) + { + *a0 -= 1; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_UP) + { + *a0 += 1; + if (*a0 > a2) + *a0 = a1; + } + else if (a3 & DPAD_LEFT) + { + *a0 -= 10; + if (*a0 < a1) + *a0 = a2; + } + else if (a3 & DPAD_RIGHT) + { + *a0 += 10; + if (*a0 > a2) + *a0 = a1; + } + else + return FALSE; + return TRUE; } -NAKED -bool8 DebugMenu_8077E40() +int DebugMenu_8077E40(int flag) { - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " ldr r0, ._297 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._294 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._295 @cond_branch\n" - "._294:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " b ._302\n" - "._298:\n" - " .align 2, 0\n" - "._297:\n" - " .word gMain\n" - "._295:\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._299 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " cmp r4, #0\n" - " beq ._300 @cond_branch\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x0\n" - " b ._302\n" - "._300:\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " mov r0, #0x1\n" - " b ._302\n" - "._299:\n" - " add r0, r4, #0\n" - "._302:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return -1; + } + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (flag) + { + DebugMenu_807786C(1); + return 0; + } + else + { + DebugMenu_807786C(0); + return 1; + } + } + return flag; } -NAKED u8 DebugMenu_MakeItems() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl DebugMenu_8077EAC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + DebugMenu_8077EAC(); + ScriptContext2_Enable(); + return TRUE; } -NAKED -void DebugMenu_8077EAC() +void DebugMenu_8077EAC(void) { - asm( - " push {r4, lr}\n" - " ldr r0, ._303 @ DebugMenu_8077F40\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " ldr r1, ._303 + 4 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " mov r1, #0x1\n" - " strh r1, [r0, #0xa]\n" - " strh r1, [r0, #0xc]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._304:\n" - " .align 2, 0\n" - "._303:\n" - " .word DebugMenu_8077F40+1\n" - " .word gTasks\n" - "\n" - ); + u8 taskId = CreateTask(DebugMenu_8077F40, 80); + Menu_EraseScreen(); + gTasks[taskId].data[1] = 1; + gTasks[taskId].data[2] = 1; } -NAKED -void DebugMenu_8077EE0() +void DebugMenu_8077EE0(u16 itemId, u16 quantity) { - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r6, r1, #0\n" - " lsl r4, r4, #0x10\n" - " lsr r4, r4, #0x10\n" - " lsl r6, r6, #0x10\n" - " lsr r6, r6, #0x10\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r5, ._305 @ gStringVar1\n" - " add r0, r5, #0\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r4, #0\n" - " bl ItemId_GetName\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " add r0, r5, #0\n" - " add r1, r6, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r5, #0\n" - " mov r1, #0x12\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._306:\n" - " .align 2, 0\n" - "._305:\n" - " .word gStringVar1\n" - "\n" - ); + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, itemId, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); + Menu_PrintText(ItemId_GetName(itemId), 8, 17); + ConvertIntToDecimalStringN(gStringVar1, quantity, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 18, 17); } -NAKED -void DebugMenu_8077F40() +const u8 gDebug0x839C008[] = _("Which item?"); + +void DebugMenu_8077F40(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r0, ._307 @ gTasks\n" - " add r4, r4, r0\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._307 + 4 @ gDebug0x839C008\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n" - " str r0, [r4]\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._308:\n" - " .align 2, 0\n" - "._307:\n" - " .word gTasks\n" - " .word gDebug0x839C008\n" - " .word DebugMenu_8077F7C+1\n" - "\n" - ); + struct Task *task = gTasks + taskId; + Menu_DisplayDialogueFrame(); + Menu_PrintText(gDebug0x839C008, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077F7C; +} + +const u8 Str_839C014[] = _("How many?"); + +void DebugMenu_8077F7C(u8 taskId) +{ + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C014, 2, 15); + DebugMenu_8077EE0(task->data[1], task->data[2]); + task->func = DebugMenu_8077FFC; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_807806C; + } + else if (DebugMenu_8077DD8(task->data + 1, 1, ITEM_15C, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } } -NAKED -void DebugMenu_8077F7C() +void DebugMenu_8077FFC(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._311 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r3, ._311 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._309 @cond_branch\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._311 + 8 @ Str_839C014\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n" - " str r0, [r4]\n" - " b ._317\n" - "._312:\n" - " .align 2, 0\n" - "._311:\n" - " .word gTasks\n" - " .word gMain\n" - " .word Str_839C014\n" - " .word DebugMenu_8077FFC+1\n" - "._309:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._313 @cond_branch\n" - " ldr r0, ._315 @ DebugMenu_807806C\n" - " str r0, [r4]\n" - " b ._317\n" - "._316:\n" - " .align 2, 0\n" - "._315:\n" - " .word DebugMenu_807806C+1\n" - "._313:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xa\n" - " mov r2, #0xae\n" - " lsl r2, r2, #0x1\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x1\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._317 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._317:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + struct Task *task = gTasks + taskId; + if (gMain.newKeys & A_BUTTON) + { + if (AddBagItem(task->data[1], task->data[2]) == TRUE) + PlaySE(SE_SELECT); + task->func = DebugMenu_8077F40; + } + else if (gMain.newKeys & B_BUTTON) + { + task->func = DebugMenu_8077F40; + } + else if (DebugMenu_8077DD8(task->data + 2, 1, 99, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8077EE0(task->data[1], task->data[2]); + } } -NAKED -void DebugMenu_8077FFC() +void DebugMenu_807806C(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._321 @ gTasks\n" - " add r4, r1, r0\n" - " ldr r2, ._321 + 4 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._318 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl AddBagItem\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._320 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " b ._320\n" - "._322:\n" - " .align 2, 0\n" - "._321:\n" - " .word gTasks\n" - " .word gMain\n" - "._318:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._323 @cond_branch\n" - "._320:\n" - " ldr r0, ._325 @ DebugMenu_8077F40\n" - " str r0, [r4]\n" - " b ._327\n" - "._326:\n" - " .align 2, 0\n" - "._325:\n" - " .word DebugMenu_8077F40+1\n" - "._323:\n" - " add r0, r4, #0\n" - " add r0, r0, #0xc\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x1\n" - " mov r2, #0x63\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._327 @cond_branch\n" - " ldrh r0, [r4, #0xa]\n" - " ldrh r1, [r4, #0xc]\n" - " bl DebugMenu_8077EE0\n" - "._327:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + DebugMenu_8077048(); } -NAKED -void DebugMenu_807806C() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl DebugMenu_8077048\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} +const u8 Str_839C01E[] = _("にがおえ ばんごう\n" + "ポケモンナンバー\n" + "ポケモンめい\n" + "ブリーダーめい\n" + "しゅるい\n" + "こせいらんすう"); +const u8 Str_839C04D[] = _("データなし"); -NAKED -void DebugMenu_807808C() +void DebugMenu_807808C(u32 a0) { - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffff4\n" - " add r4, r0, #0\n" - " sub r0, r4, #1\n" - " cmp r0, #0xc\n" - " bls ._328 @cond_branch\n" - " mov r4, #0x1\n" - "._328:\n" - " lsl r1, r4, #0x5\n" - " ldr r0, ._331 @ gSaveBlock1\n" - " add r5, r1, r0\n" - " bl Menu_EraseScreen\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x11\n" - " bl Menu_DrawStdWindowFrame\n" - " ldr r0, ._331 + 4 @ Str_839C01E\n" - " mov r1, #0x2\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " mov r0, sp\n" - " add r1, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x2\n" - " bl Menu_PrintText\n" - " ldrh r1, [r5, #0x8]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0x4\n" - " bl Menu_PrintText\n" - " add r4, r5, #0\n" - " add r4, r4, #0xb\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._329 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - " b ._330\n" - "._332:\n" - " .align 2, 0\n" - "._331:\n" - " .word gSaveBlock1+0x2ddc\n" - " .word Str_839C01E\n" - "._329:\n" - " ldr r0, ._335 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x6\n" - " bl Menu_PrintText\n" - "._330:\n" - " add r4, r5, #0\n" - " add r4, r4, #0x16\n" - " add r0, r4, #0\n" - " bl StringLength\n" - " lsl r0, r0, #0x10\n" - " lsr r0, r0, #0x10\n" - " cmp r0, #0xb\n" - " bhi ._333 @cond_branch\n" - " add r0, r4, #0\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - " b ._334\n" - "._336:\n" - " .align 2, 0\n" - "._335:\n" - " .word Str_839C04D\n" - "._333:\n" - " ldr r0, ._337 @ Str_839C04D\n" - " mov r1, #0xb\n" - " mov r2, #0x8\n" - " bl Menu_PrintText\n" - "._334:\n" - " ldrb r1, [r5, #0xa]\n" - " mov r0, sp\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xa\n" - " bl Menu_PrintText\n" - " ldr r1, [r5]\n" - " mov r0, sp\n" - " mov r2, #0x2\n" - " mov r3, #0x8\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0xb\n" - " mov r2, #0xc\n" - " bl Menu_PrintText\n" - " add sp, sp, #0xc\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._338:\n" - " .align 2, 0\n" - "._337:\n" - " .word Str_839C04D\n" - "\n" - ); + u8 strbuf[11]; + struct ContestWinner *winner; + + if (a0 == 0 || a0 > 13) + a0 = 1; + winner = gSaveBlock1.contestWinners + a0 - 1; + + Menu_EraseScreen(); + Menu_DrawStdWindowFrame(0, 0, 19, 17); + Menu_PrintText(Str_839C01E, 2, 2); + + ConvertIntToDecimalStringN(strbuf, a0, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 2); + + ConvertIntToDecimalStringN(strbuf, winner->species, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 4); + + if (StringLength(winner->nickname) <= 11) + Menu_PrintText(winner->nickname, 11, 6); + else + Menu_PrintText(Str_839C04D, 11, 6); + + if (StringLength(winner->trainerName) <= 11) + Menu_PrintText(winner->trainerName, 11, 8); + else + Menu_PrintText(Str_839C04D, 11, 8); + + ConvertIntToDecimalStringN(strbuf, winner->contestCategory, STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(strbuf, 11, 10); + + ConvertIntToHexStringN(strbuf, winner->personality, STR_CONV_MODE_LEADING_ZEROS, 8); + Menu_PrintText(strbuf, 11, 12); } -NAKED -void DebugMenu_807817C() +void DebugMenu_807817C(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " ldr r0, ._340 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._339 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - "._339:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._341:\n" - " .align 2, 0\n" - "._340:\n" - " .word gMain\n" - "\n" - ); + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } } -NAKED -void DebugMenu_80781A8() +void DebugMenu_80781A8(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r1, r1, #0x3\n" - " ldr r0, ._344 @ gTasks\n" - " add r5, r1, r0\n" - " ldrh r1, [r5, #0x8]\n" - " mov r2, #0x8\n" - " ldsh r0, [r5, r2]\n" - " cmp r0, #0\n" - " bne ._342 @cond_branch\n" - " add r0, r1, #1\n" - " strh r0, [r5, #0x8]\n" - " b ._343\n" - "._345:\n" - " .align 2, 0\n" - "._344:\n" - " .word gTasks\n" - "._342:\n" - " ldr r2, ._348 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._346 @cond_branch\n" - " mov r1, #0x8\n" - " ldsh r0, [r5, r1]\n" - " bl DebugMenu_807808C\n" - " ldr r0, ._348 + 4 @ DebugMenu_807817C\n" - " str r0, [r5]\n" - " b ._350\n" - "._349:\n" - " .align 2, 0\n" - "._348:\n" - " .word gMain\n" - " .word DebugMenu_807817C+1\n" - "._346:\n" - " add r0, r5, #0\n" - " add r0, r0, #0x8\n" - " ldrh r1, [r2, #0x30]\n" - " mov r3, #0xc0\n" - " and r3, r3, r1\n" - " mov r1, #0x1\n" - " mov r2, #0xd\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0\n" - " beq ._350 @cond_branch\n" - "._343:\n" - " mov r0, #0x4\n" - " mov r1, #0x11\n" - " mov r2, #0x16\n" - " mov r3, #0x12\n" - " bl Menu_BlankWindowRect\n" - " ldr r4, ._351 @ gStringVar1\n" - " mov r2, #0x8\n" - " ldsh r1, [r5, r2]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - "._350:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._352:\n" - " .align 2, 0\n" - "._351:\n" - " .word gStringVar1\n" - "\n" - ); + struct Task *task = gTasks + taskId; + + if (task->data[0] == 0) + task->data[0]++; + else if (gMain.newKeys & A_BUTTON) + { + DebugMenu_807808C(task->data[0]); + task->func = DebugMenu_807817C; + return; + } + else if (!DebugMenu_8077DD8(task->data + 0, 1, 13, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN))) + return; + Menu_BlankWindowRect(4, 17, 22, 18); + ConvertIntToDecimalStringN(gStringVar1, task->data[0], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 4, 17); } -NAKED -u8 DebugMenu_ViewPortraits() +u8 DebugMenu_ViewPortraits(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._353 @ DebugMenu_80781A8\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._354:\n" - " .align 2, 0\n" - "._353:\n" - " .word DebugMenu_80781A8+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_80781A8, 80); + ScriptContext2_Enable(); + return TRUE; } -NAKED -void DebugMenu_8078254() +void DebugMenu_8078254(u32 a0) { - asm( - " push {lr}\n" - " bl DebugMenu_807808C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + DebugMenu_807808C(a0); } NAKED @@ -2369,6 +1829,9 @@ u8 DebugMenu_SetTime() ); } +const u8 Str_839C053[] = _("Miracle Island emerged\n" + "Random numbers:{STR_VAR_1}"); + NAKED void DebugMenu_80782EC() { -- cgit v1.2.3 From b320e08a1245ab0a7971807392d8ed0105c8490a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 17:08:36 -0400 Subject: through DebugMenu_8078550 --- data/start_menu_debug.s | 219 ------------- include/reset_rtc_screen.h | 2 + src/debug/start_menu_debug.c | 760 ++++++++++++++----------------------------- 3 files changed, 255 insertions(+), 726 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index d22e6efb4..69030b548 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,225 +6,6 @@ .section .rodata -Str_839C07C:: @ 0x839C07C - .string "{STR_VAR_1}:{STR_VAR_2}\n" - .string "{STR_VAR_3}$" - -Str_839C085:: @ 0x839C085 - .string "みしよう データ$" - -Str_839C08E:: @ 0x839C08E - .string "Confirmation$" - -Str_839C09B:: @ 0x839C09B - .string "Max-1 set$" - -Str_839C0A5:: @ 0x839C0A5 - .string "Zero clear$" - -Str_839C0B0:: @ 0x839C0B0 - .string "レポート$" - -Str_839C0B5:: @ 0x839C0B5 - .string "クリア じかん$" - -Str_839C0BD:: @ 0x839C0BD - .string "りゅうこう さくせい$" - -Str_839C0C8:: @ 0x839C0C8 - .string "きのみを うえたかいすう$" - -Str_839C0D5:: @ 0x839C0D5 - .string "じてんしゃこうかん$" - -Str_839C0DF:: @ 0x839C0DF - .string "ほすう$" - -Str_839C0E3:: @ 0x839C0E3 - .string "インタビュー$" - -Str_839C0EA:: @ 0x839C0EA - .string "バトル$" - -Str_839C0EE:: @ 0x839C0EE - .string "やせいバトル$" - -Str_839C0F5:: @ 0x839C0F5 - .string "トレーナーバトル$" - -Str_839C0FE:: @ 0x839C0FE - .string "でんどういり$" - -Str_839C105:: @ 0x839C105 - .string "ポケモンほかく$" - -Str_839C10D:: @ 0x839C10D - .string "つった かいすう$" - -Str_839C116:: @ 0x839C116 - .string "タマゴかえった$" - -Str_839C11E:: @ 0x839C11E - .string "しんかした$" - -Str_839C124:: @ 0x839C124 - .string "ポケセン かいふく$" - -Str_839C12E:: @ 0x839C12E - .string "じたく かいふく$" - -Str_839C137:: @ 0x839C137 - .string "サファリ りよう$" - -Str_839C140:: @ 0x839C140 - .string "ひでん:いあいぎり$" - -Str_839C14A:: @ 0x839C14A - .string "ひでん:いわくだき$" - -Str_839C154:: @ 0x839C154 - .string "きち ひっこし$" - -Str_839C15C:: @ 0x839C15C - .string "つうしんこうかん$" - -Str_839C165:: @ 0x839C165 - .string "つうしんたいせん$" - -Str_839C16E:: @ 0x839C16E - .string "つうしん かち$" - -Str_839C176:: @ 0x839C176 - .string "つうしん まけ$" - -Str_839C17E:: @ 0x839C17E - .string "つうしん ひきわけ$" - -Str_839C188:: @ 0x839C188 - .string "わざ:はねる$" - -Str_839C18F:: @ 0x839C18F - .string "わざ:わるあがき$" - -Str_839C198:: @ 0x839C198 - .string "スロットおおあたりかいすう$" - -Str_839C1A6:: @ 0x839C1A6 - .string "ルーレット れんしょう$" - -Str_839C1B2:: @ 0x839C1B2 - .string "バトルタワー$" - -Str_839C1B9:: @ 0x839C1B9 - .string "バトルタワーかち$" - -Str_839C1C2:: @ 0x839C1C2 - .string "バトルタワーれんしょう$" - -Str_839C1CE:: @ 0x839C1CE - .string "ポロックさくせい$" - -Str_839C1D7:: @ 0x839C1D7 - .string "つうしんでポロックつくった$" - -Str_839C1E5:: @ 0x839C1E5 - .string "つうしんコンテストかち$" - -Str_839C1F1:: @ 0x839C1F1 - .string "CPUコンテストさんか$" - -Str_839C1FD:: @ 0x839C1FD - .string "CPUコンテストかち$" - -Str_839C208:: @ 0x839C208 - .string "かいもの$" - -Str_839C20D:: @ 0x839C20D - .string "ダウジングマシン$" - -Str_839C216:: @ 0x839C216 - .string "あめふり$" - -Str_839C21B:: @ 0x839C21B - .string "ずかんをみた$" - -Str_839C222:: @ 0x839C222 - .string "リボン もらった$" - -Str_839C22B:: @ 0x839C22B - .string "だんさ とびおり$" - -Str_839C234:: @ 0x839C234 - .string "TVを みた$" - -Str_839C23B:: @ 0x839C23B - .string "とけいを みた$" - -Str_839C243:: @ 0x839C243 - .string "くじが あたった$" - -Str_839C24C:: @ 0x839C24C - .string "ポケモンあずけた$" - -Str_839C255:: @ 0x839C255 - .string "ロープウェイりよう$" - -Str_839C25F:: @ 0x839C25F - .string "おんせん はいった$" - - .align 2 -gUnknown_Debug_839C26C:: @ 0x839C26C - .4byte 0xFFFFFF, Str_839C0B0 - .4byte 0x3E73B3B, Str_839C0B5 - .4byte 0xFFFFFF, Str_839C0BD - .4byte 0xFFFFFF, Str_839C0C8 - .4byte 0xFFFFFF, Str_839C0D5 - .4byte 0xFFFFFF, Str_839C0DF - .4byte 0xFFFFFF, Str_839C0E3 - .4byte 0xFFFFFF, Str_839C0EA - .4byte 0xFFFFFF, Str_839C0EE - .4byte 0xFFFFFF, Str_839C0F5 - .4byte 0x3E7, Str_839C0FE - .4byte 0xFFFFFF, Str_839C105 - .4byte 0xFFFFFF, Str_839C10D - .4byte 0xFFFFFF, Str_839C116 - .4byte 0xFFFFFF, Str_839C11E - .4byte 0xFFFFFF, Str_839C124 - .4byte 0xFFFFFF, Str_839C12E - .4byte 0xFFFFFF, Str_839C137 - .4byte 0xFFFFFF, Str_839C140 - .4byte 0xFFFFFF, Str_839C14A - .4byte 0xFFFFFF, Str_839C154 - .4byte 0xFFFFFF, Str_839C15C - .4byte 0xFFFFFF, Str_839C165 - .4byte 0x270F, Str_839C16E - .4byte 0x270F, Str_839C176 - .4byte 0x270F, Str_839C17E - .4byte 0xFFFFFF, Str_839C188 - .4byte 0xFFFFFF, Str_839C18F - .4byte 0xFFFFFF, Str_839C198 - .4byte 0xFFFFFF, Str_839C1A6 - .4byte 0xFFFFFF, Str_839C1B2 - .4byte 0x0, Str_839C1B9 - .4byte 0x0, Str_839C1C2 - .4byte 0xFFFFFF, Str_839C1CE - .4byte 0xFFFFFF, Str_839C1D7 - .4byte 0xFFFFFF, Str_839C1E5 - .4byte 0xFFFFFF, Str_839C1F1 - .4byte 0xFFFFFF, Str_839C1FD - .4byte 0xFFFFFF, Str_839C208 - .4byte 0xFFFFFF, Str_839C20D - .4byte 0xFFFFFF, Str_839C216 - .4byte 0xFFFFFF, Str_839C21B - .4byte 0xFFFFFF, Str_839C222 - .4byte 0xFFFFFF, Str_839C22B - .4byte 0xFFFFFF, Str_839C234 - .4byte 0xFFFFFF, Str_839C23B - .4byte 0xFFFFFF, Str_839C243 - .4byte 0xFFFFFF, Str_839C24C - .4byte 0xFFFFFF, Str_839C255 - .4byte 0xFFFFFF, Str_839C25F - gUnknown_Debug_839C3FC:: @ 0x839C3FC .4byte Str_839C08E, DebugMenu_8078774+1 .4byte Str_839C09B, DebugMenu_8078788+1 diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h index 2de95534a..88abd4945 100644 --- a/include/reset_rtc_screen.h +++ b/include/reset_rtc_screen.h @@ -3,5 +3,7 @@ void CB2_InitResetRtcScreen(void); void debug_sub_806F8F8(void); +void debug_sub_806F9E4(u8 taskId); +void debug_sub_806F99C(void); #endif // GUARD_RESET_RTC_SCREEN_H diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 43d13ae9c..3b0fe7591 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -42,6 +42,7 @@ #include "fldeff_secretpower.h" #include "data2.h" #include "item.h" +#include "reset_rtc_screen.h" // berry_blender.c extern void unref_sub_80524BC(void); @@ -1753,553 +1754,298 @@ void DebugMenu_8078254(u32 a0) DebugMenu_807808C(a0); } -NAKED -u8 DebugMenu_AllBadges() +u8 DebugMenu_AllBadges(void) { - asm( - " push {lr}\n" - " ldr r0, ._355 @ 0x807\n" - " bl FlagSet\n" - " ldr r0, ._355 + 4 @ 0x808\n" - " bl FlagSet\n" - " ldr r0, ._355 + 8 @ 0x809\n" - " bl FlagSet\n" - " ldr r0, ._355 + 12 @ 0x80a\n" - " bl FlagSet\n" - " ldr r0, ._355 + 16 @ 0x80b\n" - " bl FlagSet\n" - " ldr r0, ._355 + 20 @ 0x80c\n" - " bl FlagSet\n" - " ldr r0, ._355 + 24 @ 0x80d\n" - " bl FlagSet\n" - " ldr r0, ._355 + 28 @ 0x80e\n" - " bl FlagSet\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._356:\n" - " .align 2, 0\n" - "._355:\n" - " .word 0x807\n" - " .word 0x808\n" - " .word 0x809\n" - " .word 0x80a\n" - " .word 0x80b\n" - " .word 0x80c\n" - " .word 0x80d\n" - " .word 0x80e\n" - "\n" - ); + FlagSet(FLAG_BADGE01_GET); + FlagSet(FLAG_BADGE02_GET); + FlagSet(FLAG_BADGE03_GET); + FlagSet(FLAG_BADGE04_GET); + FlagSet(FLAG_BADGE05_GET); + FlagSet(FLAG_BADGE06_GET); + FlagSet(FLAG_BADGE07_GET); + FlagSet(FLAG_BADGE08_GET); + CloseMenu(); + return TRUE; } -NAKED -u8 DebugMenu_TimeRecords() +u8 DebugMenu_TimeRecords(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._357 @ debug_sub_806F9E4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._358:\n" - " .align 2, 0\n" - "._357:\n" - " .word debug_sub_806F9E4+1\n" - "\n" - ); + CloseMenu(); + CreateTask(debug_sub_806F9E4, 80); + ScriptContext2_Enable(); + return TRUE; } -NAKED -u8 DebugMenu_SetTime() +u8 DebugMenu_SetTime(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl debug_sub_806F99C\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + debug_sub_806F99C(); + ScriptContext2_Enable(); + return TRUE; } const u8 Str_839C053[] = _("Miracle Island emerged\n" "Random numbers:{STR_VAR_1}"); -NAKED -void DebugMenu_80782EC() +void DebugMenu_80782EC(u16 rnums) { - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._359 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._359 + 4 @ Str_839C053\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._360:\n" - " .align 2, 0\n" - "._359:\n" - " .word gStringVar1\n" - " .word Str_839C053\n" - "\n" - ); + ConvertIntToHexStringN(gStringVar1, rnums, STR_CONV_MODE_LEFT_ALIGN, 4); + sub_8071F40(Str_839C053); } -NAKED -void DebugMenu_8078310() +void DebugMenu_8078310(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._364 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._361 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._362 @cond_branch\n" - " b ._375\n" - "._365:\n" - " .align 2, 0\n" - "._364:\n" - " .word gTasks+0x8\n" - "._361:\n" - " ldr r0, ._367 @ 0x4024\n" - " bl VarGet\n" - " strh r0, [r4, #0x2]\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._375\n" - "._368:\n" - " .align 2, 0\n" - "._367:\n" - " .word 0x4024\n" - "._362:\n" - " ldr r3, ._371 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._369 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " ldr r0, ._371 + 4 @ 0x4024\n" - " bl GetVarPointer\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " b ._370\n" - "._372:\n" - " .align 2, 0\n" - "._371:\n" - " .word gMain\n" - " .word 0x4024\n" - "._369:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._373 @cond_branch\n" - "._370:\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._375\n" - "._373:\n" - " add r0, r4, #2\n" - " ldr r2, ._376 @ 0xffff\n" - " ldrh r3, [r3, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._375 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80782EC\n" - "._375:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._377:\n" - " .align 2, 0\n" - "._376:\n" - " .word 0xffff\n" - "\n" - ); + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = VarGet(VAR_MIRAGE_RND_H); + DebugMenu_80782EC(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + *GetVarPointer(VAR_MIRAGE_RND_H) = data[1]; + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 0xFFFF, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_80782EC(data[1]); + break; + } } -NAKED -u8 DebugMenu_MiragaIslandRND() +u8 DebugMenu_MiragaIslandRND(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._378 @ DebugMenu_8078310\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._379:\n" - " .align 2, 0\n" - "._378:\n" - " .word DebugMenu_8078310+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_8078310, 80); + ScriptContext2_Enable(); + return TRUE; } -NAKED -bool8 DebugMenu_80783C8() +bool8 DebugMenu_80783C8(void) { - asm( - " push {r4, lr}\n" - " ldr r0, ._383 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x30\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._382 @cond_branch\n" - " mov r0, #0x5\n" - " bl PlaySE\n" - " ldr r4, ._383 + 4 @ 0x804\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._381 @cond_branch\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " mov r0, #0x0\n" - " bl DebugMenu_807786C\n" - " b ._382\n" - "._384:\n" - " .align 2, 0\n" - "._383:\n" - " .word gMain\n" - " .word 0x804\n" - "._381:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " mov r0, #0x1\n" - " bl DebugMenu_807786C\n" - "._382:\n" - " ldr r0, ._388 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._385 @cond_branch\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._386 @cond_branch\n" - "._385:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._387\n" - "._389:\n" - " .align 2, 0\n" - "._388:\n" - " .word gMain\n" - "._386:\n" - " mov r0, #0x0\n" - "._387:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT)) + { + PlaySE(SE_SELECT); + if (!FlagGet(FLAG_SYS_GAME_CLEAR)) + { + FlagSet(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(0); + } + else + { + FlagClear(FLAG_SYS_GAME_CLEAR); + DebugMenu_807786C(1); + } + } + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; } -NAKED -u8 DebugMenu_ToggleClearFlag() +u8 DebugMenu_ToggleClearFlag(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._390 @ 0x804\n" - " bl FlagGet\n" - " mov r1, #0x1\n" - " eor r0, r0, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._390 + 4 @ gMenuCallback\n" - " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._391:\n" - " .align 2, 0\n" - "._390:\n" - " .word 0x804\n" - " .word gMenuCallback\n" - " .word DebugMenu_80783C8+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_GAME_CLEAR) ^ 1); + gMenuCallback = DebugMenu_80783C8; + return FALSE; } -NAKED -bool8 DebugMenu_8078464() +bool8 DebugMenu_8078464(void) { - asm( - " push {r4, lr}\n" - " ldr r4, ._396 @ 0x82a\n" - " add r0, r4, #0\n" - " bl FlagGet\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._392 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._393 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._394 @cond_branch\n" - " b ._401\n" - "._397:\n" - " .align 2, 0\n" - "._396:\n" - " .word 0x82a\n" - "._393:\n" - " cmp r1, #0x1\n" - " beq ._398 @cond_branch\n" - " b ._401\n" - "._392:\n" - " add r0, r4, #0\n" - " bl FlagClear\n" - " b ._401\n" - "._398:\n" - " add r0, r4, #0\n" - " bl FlagSet\n" - " b ._401\n" - "._394:\n" - " mov r0, #0x1\n" - " b ._402\n" - "._401:\n" - " mov r0, #0x0\n" - "._402:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + switch (DebugMenu_8077E40(FlagGet(FLAG_SYS_WEATHER_CTRL))) + { + case 0: + FlagClear(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case 1: + FlagSet(FLAG_SYS_WEATHER_CTRL); + return FALSE; + case -1: + return TRUE; + } + return FALSE; } -NAKED -u8 DebugMenu_OpenWeatherEvents() +u8 DebugMenu_OpenWeatherEvents(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._404 @ 0x82a\n" - " bl FlagGet\n" - " mov r1, #0x0\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._403 @cond_branch\n" - " mov r1, #0x1\n" - "._403:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._404 + 4 @ gMenuCallback\n" - " ldr r0, ._404 + 8 @ DebugMenu_8078464\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._405:\n" - " .align 2, 0\n" - "._404:\n" - " .word 0x82a\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078464+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_807786C(FlagGet(FLAG_SYS_WEATHER_CTRL) ? FALSE : TRUE); + gMenuCallback = DebugMenu_8078464; + return FALSE; } -NAKED -bool8 DebugMenu_80784E8() +bool8 DebugMenu_80784E8(void) { - asm( - " push {lr}\n" - " bl IsMysteryGiftEnabled\n" - " bl DebugMenu_8077E40\n" - " add r1, r0, #0\n" - " cmp r1, #0\n" - " beq ._406 @cond_branch\n" - " cmp r1, #0\n" - " bgt ._407 @cond_branch\n" - " mov r0, #0x1\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._408 @cond_branch\n" - " b ._413\n" - "._407:\n" - " cmp r1, #0x1\n" - " beq ._410 @cond_branch\n" - " b ._413\n" - "._406:\n" - " bl DisableMysteryGift\n" - " b ._413\n" - "._410:\n" - " bl EnableMysteryGift\n" - " b ._413\n" - "._408:\n" - " mov r0, #0x1\n" - " b ._414\n" - "._413:\n" - " mov r0, #0x0\n" - "._414:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + switch (DebugMenu_8077E40(IsMysteryGiftEnabled())) + { + case 0: + DisableMysteryGift(); + return FALSE; + case 1: + EnableMysteryGift(); + return FALSE; + case -1: + return TRUE; + } + return FALSE; } -NAKED -u8 DebugMenu_OpenMysteryEvent() +u8 DebugMenu_OpenMysteryEvent(void) { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " bl IsMysteryGiftEnabled\n" - " mov r1, #0x0\n" - " cmp r0, #0\n" - " bne ._415 @cond_branch\n" - " mov r1, #0x1\n" - "._415:\n" - " add r0, r1, #0\n" - " bl DebugMenu_807786C\n" - " ldr r1, ._416 @ gMenuCallback\n" - " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._417:\n" - " .align 2, 0\n" - "._416:\n" - " .word gMenuCallback\n" - " .word DebugMenu_80784E8+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_807786C(IsMysteryGiftEnabled() ? FALSE : TRUE); + gMenuCallback = DebugMenu_80784E8; + return FALSE; } -NAKED -void DebugMenu_8078550() +const u8 Str_839C07C[] = _("{STR_VAR_1}:{STR_VAR_2}\n" + "{STR_VAR_3}"); +const u8 Str_839C085[] = _("みしよう データ"); +const u8 Str_839C08E[] = _("Confirmation"); +const u8 Str_839C09B[] = _("Max-1 set"); +const u8 Str_839C0A5[] = _("Zero clear"); +const u8 Str_839C0B0[] = _("レポート"); +const u8 Str_839C0B5[] = _("クリア じかん"); +const u8 Str_839C0BD[] = _("りゅうこう さくせい"); +const u8 Str_839C0C8[] = _("きのみを うえたかいすう"); +const u8 Str_839C0D5[] = _("じてんしゃこうかん"); +const u8 Str_839C0DF[] = _("ほすう"); +const u8 Str_839C0E3[] = _("インタビュー"); +const u8 Str_839C0EA[] = _("バトル"); +const u8 Str_839C0EE[] = _("やせいバトル"); +const u8 Str_839C0F5[] = _("トレーナーバトル"); +const u8 Str_839C0FE[] = _("でんどういり"); +const u8 Str_839C105[] = _("ポケモンほかく"); +const u8 Str_839C10D[] = _("つった かいすう"); +const u8 Str_839C116[] = _("タマゴかえった"); +const u8 Str_839C11E[] = _("しんかした"); +const u8 Str_839C124[] = _("ポケセン かいふく"); +const u8 Str_839C12E[] = _("じたく かいふく"); +const u8 Str_839C137[] = _("サファリ りよう"); +const u8 Str_839C140[] = _("ひでん:いあいぎり"); +const u8 Str_839C14A[] = _("ひでん:いわくだき"); +const u8 Str_839C154[] = _("きち ひっこし"); +const u8 Str_839C15C[] = _("つうしんこうかん"); +const u8 Str_839C165[] = _("つうしんたいせん"); +const u8 Str_839C16E[] = _("つうしん かち"); +const u8 Str_839C176[] = _("つうしん まけ"); +const u8 Str_839C17E[] = _("つうしん ひきわけ"); +const u8 Str_839C188[] = _("わざ:はねる"); +const u8 Str_839C18F[] = _("わざ:わるあがき"); +const u8 Str_839C198[] = _("スロットおおあたりかいすう"); +const u8 Str_839C1A6[] = _("ルーレット れんしょう"); +const u8 Str_839C1B2[] = _("バトルタワー"); +const u8 Str_839C1B9[] = _("バトルタワーかち"); +const u8 Str_839C1C2[] = _("バトルタワーれんしょう"); +const u8 Str_839C1CE[] = _("ポロックさくせい"); +const u8 Str_839C1D7[] = _("つうしんでポロックつくった"); +const u8 Str_839C1E5[] = _("つうしんコンテストかち"); +const u8 Str_839C1F1[] = _("CPUコンテストさんか"); +const u8 Str_839C1FD[] = _("CPUコンテストかち"); +const u8 Str_839C208[] = _("かいもの"); +const u8 Str_839C20D[] = _("ダウジングマシン"); +const u8 Str_839C216[] = _("あめふり"); +const u8 Str_839C21B[] = _("ずかんをみた"); +const u8 Str_839C222[] = _("リボン もらった"); +const u8 Str_839C22B[] = _("だんさ とびおり"); +const u8 Str_839C234[] = _("TVを みた"); +const u8 Str_839C23B[] = _("とけいを みた"); +const u8 Str_839C243[] = _("くじが あたった"); +const u8 Str_839C24C[] = _("ポケモンあずけた"); +const u8 Str_839C255[] = _("ロープウェイりよう"); +const u8 Str_839C25F[] = _("おんせん はいった"); + +const struct { + u32 maxVal; + const u8 * name; +} gUnknown_Debug_839C26C[] = { + {0xFFFFFF, Str_839C0B0}, + {65485627, Str_839C0B5}, + {0xFFFFFF, Str_839C0BD}, + {0xFFFFFF, Str_839C0C8}, + {0xFFFFFF, Str_839C0D5}, + {0xFFFFFF, Str_839C0DF}, + {0xFFFFFF, Str_839C0E3}, + {0xFFFFFF, Str_839C0EA}, + {0xFFFFFF, Str_839C0EE}, + {0xFFFFFF, Str_839C0F5}, + {999, Str_839C0FE}, + {0xFFFFFF, Str_839C105}, + {0xFFFFFF, Str_839C10D}, + {0xFFFFFF, Str_839C116}, + {0xFFFFFF, Str_839C11E}, + {0xFFFFFF, Str_839C124}, + {0xFFFFFF, Str_839C12E}, + {0xFFFFFF, Str_839C137}, + {0xFFFFFF, Str_839C140}, + {0xFFFFFF, Str_839C14A}, + {0xFFFFFF, Str_839C154}, + {0xFFFFFF, Str_839C15C}, + {0xFFFFFF, Str_839C165}, + {9999, Str_839C16E}, + {9999, Str_839C176}, + {9999, Str_839C17E}, + {0xFFFFFF, Str_839C188}, + {0xFFFFFF, Str_839C18F}, + {0xFFFFFF, Str_839C198}, + {0xFFFFFF, Str_839C1A6}, + {0xFFFFFF, Str_839C1B2}, + {0x0, Str_839C1B9}, + {0x0, Str_839C1C2}, + {0xFFFFFF, Str_839C1CE}, + {0xFFFFFF, Str_839C1D7}, + {0xFFFFFF, Str_839C1E5}, + {0xFFFFFF, Str_839C1F1}, + {0xFFFFFF, Str_839C1FD}, + {0xFFFFFF, Str_839C208}, + {0xFFFFFF, Str_839C20D}, + {0xFFFFFF, Str_839C216}, + {0xFFFFFF, Str_839C21B}, + {0xFFFFFF, Str_839C222}, + {0xFFFFFF, Str_839C22B}, + {0xFFFFFF, Str_839C234}, + {0xFFFFFF, Str_839C23B}, + {0xFFFFFF, Str_839C243}, + {0xFFFFFF, Str_839C24C}, + {0xFFFFFF, Str_839C255}, + {0xFFFFFF, Str_839C25F} +}; + +void DebugMenu_8078550(u16 gameStat) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x10\n" - " lsr r6, r0, #0x10\n" - " lsl r0, r6, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl GetGameStat\n" - " add r7, r0, #0\n" - " ldr r0, ._420 @ gStringVar1\n" - " add r1, r6, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " ldr r0, ._420 + 4 @ gStringVar2\n" - " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n" - " lsl r4, r6, #0x3\n" - " add r1, r5, #4\n" - " add r1, r4, r1\n" - " ldr r1, [r1]\n" - " bl StringCopy\n" - " add r4, r4, r5\n" - " ldr r0, [r4]\n" - " cmp r0, #0\n" - " bne ._418 @cond_branch\n" - " ldr r0, ._420 + 12 @ gStringVar3\n" - " ldr r1, ._420 + 16 @ Str_839C085\n" - " bl StringCopy\n" - " b ._423\n" - "._421:\n" - " .align 2, 0\n" - "._420:\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gUnknown_Debug_839C26C\n" - " .word gStringVar3\n" - " .word Str_839C085\n" - "._418:\n" - " cmp r6, #0x1\n" - " beq ._422 @cond_branch\n" - " ldr r0, ._424 @ gStringVar3\n" - " add r1, r7, #0\n" - " mov r2, #0x1\n" - " mov r3, #0xa\n" - " bl ConvertIntToDecimalStringN\n" - " b ._423\n" - "._425:\n" - " .align 2, 0\n" - "._424:\n" - " .word gStringVar3\n" - "._422:\n" - " ldr r4, ._426 @ gStringVar3\n" - " lsr r1, r7, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " mov r6, #0xf0\n" - " strb r6, [r4, #0x3]\n" - " add r0, r4, #4\n" - " lsr r1, r7, #0x8\n" - " mov r5, #0xff\n" - " and r1, r1, r5\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " strb r6, [r4, #0x6]\n" - " add r4, r4, #0x7\n" - " and r7, r7, r5\n" - " add r0, r4, #0\n" - " add r1, r7, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - "._423:\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._426 + 4 @ Str_839C07C\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._427:\n" - " .align 2, 0\n" - "._426:\n" - " .word gStringVar3\n" - " .word Str_839C07C\n" - "\n" - ); + u32 value = GetGameStat(gameStat); + + ConvertIntToDecimalStringN(gStringVar1, gameStat, STR_CONV_MODE_LEADING_ZEROS, 2); + StringCopy(gStringVar2, gUnknown_Debug_839C26C[gameStat].name); + if (gUnknown_Debug_839C26C[gameStat].maxVal == 0) + StringCopy(gStringVar3, Str_839C085); + else if (gameStat != GAME_STAT_FIRST_HOF_PLAY_TIME) + ConvertIntToDecimalStringN(gStringVar3, value, STR_CONV_MODE_RIGHT_ALIGN, 10); + else + { + ConvertIntToDecimalStringN(gStringVar3, value >> 16, STR_CONV_MODE_RIGHT_ALIGN, 3); + gStringVar3[3] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 4, (value >> 8) & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + gStringVar3[6] = CHAR_COLON; + ConvertIntToDecimalStringN(gStringVar3 + 7, value & 0xff, STR_CONV_MODE_LEADING_ZEROS, 2); + } + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C07C, 2, 15); } NAKED -- cgit v1.2.3 From 21d580ec5146cdb3df1724844d8f64e47028e2bf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 17:40:26 -0400 Subject: through DebugMenu_OpenLegendsRecord --- data/start_menu_debug.s | 5 - src/debug/start_menu_debug.c | 375 ++++++++++--------------------------------- 2 files changed, 86 insertions(+), 294 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index 69030b548..afb04d2ad 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,11 +6,6 @@ .section .rodata -gUnknown_Debug_839C3FC:: @ 0x839C3FC - .4byte Str_839C08E, DebugMenu_8078774+1 - .4byte Str_839C09B, DebugMenu_8078788+1 - .4byte Str_839C0A5, DebugMenu_807879C+1 - Str_839C414:: @ 0x839C414 .string "ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" .string "CODE:{STR_VAR_2}$" diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 3b0fe7591..e96ee31c8 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -2048,326 +2048,123 @@ void DebugMenu_8078550(u16 gameStat) Menu_PrintText(Str_839C07C, 2, 15); } -NAKED -bool8 DebugMenu_807860C() +bool32 DebugMenu_807860C(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._432 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._428 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._429 @cond_branch\n" - " cmp r0, #0\n" - " beq ._430 @cond_branch\n" - " b ._447\n" - "._433:\n" - " .align 2, 0\n" - "._432:\n" - " .word gTasks+0x8\n" - "._429:\n" - " cmp r0, #0x2\n" - " beq ._434 @cond_branch\n" - " b ._447\n" - "._430:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - "._441:\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._447\n" - "._428:\n" - " ldr r3, ._439 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._437 @cond_branch\n" - " ldrh r0, [r4]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4]\n" - " mov r0, #0x1\n" - " b ._438\n" - "._440:\n" - " .align 2, 0\n" - "._439:\n" - " .word gMain\n" - "._437:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " bne ._441 @cond_branch\n" - " ldrh r1, [r3, #0x30]\n" - " mov r0, #0x40\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._442 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " asr r0, r0, #0x10\n" - " cmp r0, #0x32\n" - " bne ._446 @cond_branch\n" - " strh r2, [r4, #0x2]\n" - " b ._446\n" - "._442:\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._447 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " sub r0, r0, #0x1\n" - " strh r0, [r4, #0x2]\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bge ._446 @cond_branch\n" - " mov r0, #0x31\n" - " strh r0, [r4, #0x2]\n" - "._446:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078550\n" - " b ._447\n" - "._434:\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._447:\n" - " mov r0, #0x0\n" - "._438:\n" - " pop {r4, r5}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078550(data[1]); + data[0]++; + return FALSE; + case 1: + if (gMain.newKeys & A_BUTTON) + { + data[0]--; + return TRUE; + } + if (gMain.newKeys & B_BUTTON) + { + data[0]++; + return FALSE; + } + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + data[1]++; + if (data[1] == NUM_GAME_STATS) + data[1] = 0; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + data[1]--; + if (data[1] < 0) + data[1] = NUM_GAME_STATS - 1; + } + else + return FALSE; + DebugMenu_8078550(data[1]); + return FALSE; + case 2: + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + return FALSE; + } + return FALSE; } -NAKED -void DebugMenu_80786C0() +void DebugMenu_80786C0(u8 taskId) { - asm( - " push {lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " bl DebugMenu_807860C\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + DebugMenu_807860C(taskId); } -NAKED -void DebugMenu_80786D0() +void DebugMenu_80786D0(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " ldr r1, ._450 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._449 @cond_branch\n" - " sub r1, r0, #1\n" - " add r0, r2, #0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._449:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._451:\n" - " .align 2, 0\n" - "._450:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, gUnknown_Debug_839C26C[gameStat].maxVal - 1); + PlaySE(SE_PIN); + } + } } -NAKED -void DebugMenu_8078714() +void DebugMenu_8078714(u8 taskId) { - asm( - " push {r4, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " add r0, r4, #0\n" - " bl DebugMenu_807860C\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " ldr r1, ._454 @ gTasks\n" - " lsl r0, r4, #0x2\n" - " add r0, r0, r4\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r2, [r0, #0xa]\n" - " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n" - " lsl r0, r2, #0x3\n" - " add r0, r0, r1\n" - " ldr r0, [r0]\n" - " cmp r0, #0\n" - " beq ._453 @cond_branch\n" - " add r0, r2, #0\n" - " mov r1, #0x0\n" - " bl SetGameStat\n" - " mov r0, #0x15\n" - " bl PlaySE\n" - "._453:\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._455:\n" - " .align 2, 0\n" - "._454:\n" - " .word gTasks\n" - " .word gUnknown_Debug_839C26C\n" - "\n" - ); + if (DebugMenu_807860C(taskId)) + { + u8 gameStat = gTasks[taskId].data[1]; + if (gUnknown_Debug_839C26C[gameStat].maxVal != 0) + { + SetGameStat(gameStat, 0); + PlaySE(SE_PIN); + } + } } -NAKED -bool8 DebugMenu_8078758() +bool8 DebugMenu_8078758(TaskFunc func) { - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " add r0, r4, #0\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(func, 80); + return TRUE; } -NAKED -bool8 DebugMenu_8078774() +bool8 DebugMenu_8078774(void) { - asm( - " push {lr}\n" - " ldr r0, ._456 @ DebugMenu_80786C0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._457:\n" - " .align 2, 0\n" - "._456:\n" - " .word DebugMenu_80786C0+1\n" - "\n" - ); + return DebugMenu_8078758(DebugMenu_80786C0); } -NAKED -bool8 DebugMenu_8078788() +bool8 DebugMenu_8078788(void) { - asm( - " push {lr}\n" - " ldr r0, ._458 @ DebugMenu_80786D0\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._459:\n" - " .align 2, 0\n" - "._458:\n" - " .word DebugMenu_80786D0+1\n" - "\n" - ); + return DebugMenu_8078758(DebugMenu_80786D0); } -NAKED bool8 DebugMenu_807879C() { - asm( - " push {lr}\n" - " ldr r0, ._460 @ DebugMenu_8078714\n" - " bl DebugMenu_8078758\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._461:\n" - " .align 2, 0\n" - "._460:\n" - " .word DebugMenu_8078714+1\n" - "\n" - ); + return DebugMenu_8078758(DebugMenu_8078714); } -NAKED +const struct MenuAction gUnknown_Debug_839C3FC[] = { + {Str_839C08E, DebugMenu_8078774}, + {Str_839C09B, DebugMenu_8078788}, + {Str_839C0A5, DebugMenu_807879C} +}; + bool8 DebugMenu_80787B0() { - asm( - " push {lr}\n" - " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._463:\n" - " .align 2, 0\n" - "._462:\n" - " .word gUnknown_Debug_839C3FC\n" - "\n" - ); + return DebugMenu_8077D78(gUnknown_Debug_839C3FC); } -NAKED u8 DebugMenu_OpenLegendsRecord() { - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n" - " mov r1, #0xc\n" - " mov r2, #0x3\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._464 + 4 @ gMenuCallback\n" - " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._465:\n" - " .align 2, 0\n" - "._464:\n" - " .word gUnknown_Debug_839C3FC\n" - " .word gMenuCallback\n" - " .word DebugMenu_80787B0+1\n" - "\n" - ); + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C3FC, 12, ARRAY_COUNT(gUnknown_Debug_839C3FC)); + gMenuCallback = DebugMenu_80787B0; + return FALSE; } NAKED -- cgit v1.2.3 From b3878d6c472d773cd2072849245a9be257089450 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 18:17:17 -0400 Subject: through DebugMenu_BattleTowerStages --- data/start_menu_debug.s | 56 ++-- include/berry.h | 1 + src/debug/start_menu_debug.c | 618 +++++++++---------------------------------- 3 files changed, 160 insertions(+), 515 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index afb04d2ad..63ec49eec 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,27 +6,49 @@ .section .rodata -Str_839C414:: @ 0x839C414 - .string "ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" - .string "CODE:{STR_VAR_2}$" - -Str_839C42E:: @ 0x839C42E - .string "レベル  ステージ$" - Str_839C438:: @ 0x839C438 .string "ポロック グループ{STR_VAR_1}$" + .align 2 gUnknown_Debug_839C444:: - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 Str_839C574:: @ 0x839C574 gDebug0x839C574:: diff --git a/include/berry.h b/include/berry.h index bb5762e28..7d8787dea 100644 --- a/include/berry.h +++ b/include/berry.h @@ -48,5 +48,6 @@ void FieldObjectInteractionRemoveBerryTree(void); bool8 PlayerHasBerries(void); void ResetBerryTreeSparkleFlags(void); void debug_sub_80C2D24(u8 spicy, u8 dry, u8 sweet, u8 bitter, u8 sour, u8 smoothness); +u8 * DebugOpenBerryInfo(void); #endif // GUARD_BERRY_H diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index e96ee31c8..bd0b06828 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -63,6 +63,9 @@ void DebugMenu_8077F40(u8 taskId); void DebugMenu_8077F7C(u8 taskId); void DebugMenu_8077FFC(u8 taskId); void DebugMenu_807806C(u8 taskId); +void DebugMenu_8078A14(u8 taskId); +void DebugMenu_8078AA4(u8 taskId); +void DebugMenu_8078B38(u8 taskId); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -2167,538 +2170,157 @@ u8 DebugMenu_OpenLegendsRecord() return FALSE; } -NAKED -void DebugMenu_80787EC() +const u8 Str_839C414[] = _("ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n" + "CODE:{STR_VAR_2}"); + +void DebugMenu_80787EC(void) { - asm( - " push {r4, r5, lr}\n" - " add sp, sp, #0xfffffffc\n" - " mov r5, sp\n" - " add r5, r5, #0x2\n" - " mov r0, sp\n" - " add r1, r5, #0\n" - " bl GetXYCoordsOneStepInFrontOfPlayer\n" - " ldr r4, ._466 @ gSpecialVar_Result\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileBehaviorAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 4 @ gStringVar1\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetMetatileIdAt\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 8 @ gStringVar2\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " mov r0, sp\n" - " mov r1, #0x0\n" - " ldsh r0, [r0, r1]\n" - " mov r2, #0x0\n" - " ldsh r1, [r5, r2]\n" - " bl MapGridGetZCoordAt\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " strh r0, [r4]\n" - " ldr r0, ._466 + 12 @ gStringVar3\n" - " ldrh r1, [r4]\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._466 + 16 @ gStringVar4\n" - " ldr r1, ._466 + 20 @ Str_839C414\n" - " bl StringExpandPlaceholders\n" - " add sp, sp, #0x4\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._467:\n" - " .align 2, 0\n" - "._466:\n" - " .word gSpecialVar_Result\n" - " .word gStringVar1\n" - " .word gStringVar2\n" - " .word gStringVar3\n" - " .word gStringVar4\n" - " .word Str_839C414\n" - "\n" - ); + s16 x; + s16 y; + + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + gSpecialVar_Result = MapGridGetMetatileBehaviorAt(x, y); + ConvertIntToHexStringN(gStringVar1, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetMetatileIdAt(x, y); + ConvertIntToHexStringN(gStringVar2, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + gSpecialVar_Result = MapGridGetZCoordAt(x, y); + ConvertIntToHexStringN(gStringVar3, gSpecialVar_Result, STR_CONV_MODE_LEADING_ZEROS, 4); + StringExpandPlaceholders(gStringVar4, Str_839C414); } -NAKED -void DebugMenu_8078880() +void DebugMenu_8078880(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._472 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._468 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._469 @cond_branch\n" - " cmp r0, #0\n" - " beq ._470 @cond_branch\n" - " b ._480\n" - "._473:\n" - " .align 2, 0\n" - "._472:\n" - " .word gTasks\n" - "._469:\n" - " cmp r0, #0x2\n" - " beq ._474 @cond_branch\n" - " b ._480\n" - "._470:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._476\n" - "._468:\n" - " ldr r0, ._478 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - "._476:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._480\n" - "._479:\n" - " .align 2, 0\n" - "._478:\n" - " .word gStringVar4\n" - "._474:\n" - " ldr r0, ._481 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._480 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._480:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._482:\n" - " .align 2, 0\n" - "._481:\n" - " .word gMain\n" - "\n" - ); + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gStringVar4, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } } -NAKED -u8 DebugMenu_CellInfo() +u8 DebugMenu_CellInfo(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._483 @ DebugMenu_8078880\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl DebugMenu_80787EC\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._484:\n" - " .align 2, 0\n" - "._483:\n" - " .word DebugMenu_8078880+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_8078880, 80); + DebugMenu_80787EC(); + ScriptContext2_Enable(); + return TRUE; } -NAKED -u8 DebugMenu_OpenBerryInfo() +u8 DebugMenu_OpenBerryInfo(void) { - asm( - " push {r4, lr}\n" - " bl DebugOpenBerryInfo\n" - " add r4, r0, #0\n" - " cmp r4, #0\n" - " bne ._485 @cond_branch\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - " b ._486\n" - "._485:\n" - " mov r0, #0x0\n" - " mov r1, #0x0\n" - " mov r2, #0x13\n" - " mov r3, #0x13\n" - " bl Menu_DrawStdWindowFrame\n" - " add r0, r4, #0\n" - " mov r1, #0x1\n" - " mov r2, #0x1\n" - " bl Menu_PrintText\n" - " ldr r1, ._487 @ gMenuCallback\n" - " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - "._486:\n" - " pop {r4}\n" - " pop {r1}\n" - " bx r1\n" - "._488:\n" - " .align 2, 0\n" - "._487:\n" - " .word gMenuCallback\n" - " .word DebugMenu_8077DB4+1\n" - "\n" - ); + const u8 * berryInfo = DebugOpenBerryInfo(); + if (berryInfo != NULL) + { + Menu_DrawStdWindowFrame(0, 0, 19, 19); + Menu_PrintText(berryInfo, 1, 1); + gMenuCallback = DebugMenu_8077DB4; + return FALSE; + } + CloseMenu(); + return TRUE; } -NAKED -void DebugMenu_8078950() +const u8 Str_839C42E[] = _("レベル  ステージ"); + +void DebugMenu_8078950(void) { - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._489 @ Str_839C42E\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._490:\n" - " .align 2, 0\n" - "._489:\n" - " .word Str_839C42E\n" - "\n" - ); + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C42E, 4, 15); } -NAKED -void DebugMenu_8078968() +void DebugMenu_8078968(u16 flag) { - asm( - " push {lr}\n" - " lsl r0, r0, #0x10\n" - " cmp r0, #0\n" - " bne ._491 @cond_branch\n" - " ldr r0, ._493 @ gStringVar1\n" - " mov r1, #0x32\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " b ._492\n" - "._494:\n" - " .align 2, 0\n" - "._493:\n" - " .word gStringVar1\n" - "._491:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x64\n" - " mov r2, #0x2\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - "._492:\n" - " ldr r0, ._495 @ gStringVar1\n" - " mov r1, #0x4\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r0}\n" - " bx r0\n" - "._496:\n" - " .align 2, 0\n" - "._495:\n" - " .word gStringVar1\n" - "\n" - ); + if (flag == 0) + ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEADING_ZEROS, 3); + else + ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEADING_ZEROS, 3); + Menu_PrintText(gStringVar1, 4, 17); } -NAKED -void DebugMenu_80789A4() +void DebugMenu_80789A4(u16 value) { - asm( - " push {r4, lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r4, ._497 @ gStringVar1\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x4\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._498:\n" - " .align 2, 0\n" - "._497:\n" - " .word gStringVar1\n" - "\n" - ); + ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, 4); + Menu_PrintText(gStringVar1, 9, 17); } -NAKED -void DebugMenu_80789CC() +void DebugMenu_80789CC(u8 taskId) { - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._499 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r0, ._499 + 4 @ gSaveBlock2\n" - " ldr r1, ._499 + 8 @ 0x55c\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r5, #0x2]\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r5]\n" - " bl DebugMenu_8078968\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._500:\n" - " .align 2, 0\n" - "._499:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); + s16 * data = gTasks[taskId].data; + data[0] = 0; + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[0]; + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; } -NAKED -void DebugMenu_8078A14() +void DebugMenu_8078A14(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r4, r1, #0x3\n" - " ldr r5, ._504 @ gTasks\n" - " add r2, r4, r5\n" - " ldr r0, ._504 + 4 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0xc0\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._501 @cond_branch\n" - " mov r1, #0x0\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " cmp r0, #0\n" - " bne ._502 @cond_branch\n" - " mov r1, #0x1\n" - "._502:\n" - " strh r1, [r2]\n" - " ldrh r0, [r2]\n" - " bl DebugMenu_8078968\n" - " b ._510\n" - "._505:\n" - " .align 2, 0\n" - "._504:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._501:\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._506 @cond_branch\n" - " ldr r1, ._508 @ gSaveBlock2\n" - " mov r3, #0x0\n" - " ldsh r0, [r2, r3]\n" - " lsl r0, r0, #0x1\n" - " ldr r3, ._508 + 4 @ 0x55c\n" - " add r1, r1, r3\n" - " add r0, r0, r1\n" - " ldrh r0, [r0]\n" - " strh r0, [r2, #0x2]\n" - " ldrh r0, [r2, #0x2]\n" - " bl DebugMenu_80789A4\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n" - " b ._507\n" - "._509:\n" - " .align 2, 0\n" - "._508:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078AA4+1\n" - "._506:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._510 @cond_branch\n" - " add r0, r5, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r4, r0\n" - " ldr r1, ._511 @ DebugMenu_8078B38\n" - "._507:\n" - " str r1, [r0]\n" - "._510:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._512:\n" - " .align 2, 0\n" - "._511:\n" - " .word DebugMenu_8078B38+1\n" - "\n" - ); + s16 * data = gTasks[taskId].data; + if (gMain.newKeys & (DPAD_UP | DPAD_DOWN)) + { + data[0] = data[0] == 0 ? 1 : 0; + DebugMenu_8078968(data[0]); + } + else if (gMain.newKeys & A_BUTTON) + { + data[1] = gSaveBlock2.battleTower.curStreakChallengesNum[data[0]]; + DebugMenu_80789A4(data[1]); + gTasks[taskId].func = DebugMenu_8078AA4; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8078B38; + } } -NAKED -void DebugMenu_8078AA4() +void DebugMenu_8078AA4(u8 taskId) { - asm( - " push {r4, r5, r6, r7, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r7, ._515 @ gTasks\n" - " add r4, r5, r7\n" - " add r0, r4, #2\n" - " mov r2, #0xfa\n" - " lsl r2, r2, #0x3\n" - " ldr r6, ._515 + 4 @ gMain\n" - " ldrh r3, [r6, #0x30]\n" - " mov r1, #0x0\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._513 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_80789A4\n" - " b ._521\n" - "._516:\n" - " .align 2, 0\n" - "._515:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - "._513:\n" - " ldrh r1, [r6, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._517 @cond_branch\n" - " ldr r1, ._519 @ gSaveBlock2\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x1\n" - " ldr r2, ._519 + 4 @ 0x55c\n" - " add r1, r1, r2\n" - " add r0, r0, r1\n" - " ldrh r1, [r4, #0x2]\n" - " strh r1, [r0]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n" - " b ._518\n" - "._520:\n" - " .align 2, 0\n" - "._519:\n" - " .word gSaveBlock2\n" - " .word 0x55c\n" - " .word DebugMenu_8078B38+1\n" - "._517:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._521 @cond_branch\n" - " bl DebugMenu_8078950\n" - " ldrh r0, [r4]\n" - " bl DebugMenu_8078968\n" - " add r0, r7, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._522 @ DebugMenu_8078A14\n" - "._518:\n" - " str r1, [r0]\n" - "._521:\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._523:\n" - " .align 2, 0\n" - "._522:\n" - " .word DebugMenu_8078A14+1\n" - "\n" - ); + s16 * data = gTasks[taskId].data; + if (DebugMenu_8077DD8(data + 1, 0, 2000, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_80789A4(data[1]); + } + else if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.battleTower.curStreakChallengesNum[data[0]] = data[1]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8078B38; + } + else if (gMain.newKeys & B_BUTTON) + { + DebugMenu_8078950(); + DebugMenu_8078968(data[0]); + gTasks[taskId].func = DebugMenu_8078A14; + } } -NAKED -void DebugMenu_8078B38() +void DebugMenu_8078B38(u8 taskId) { - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); } -NAKED -u8 DebugMenu_BattleTowerStages() +u8 DebugMenu_BattleTowerStages(void) { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " bl ScriptContext2_Enable\n" - " ldr r0, ._524 @ DebugMenu_80789CC\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._525:\n" - " .align 2, 0\n" - "._524:\n" - " .word DebugMenu_80789CC+1\n" - "\n" - ); + CloseMenu(); + ScriptContext2_Enable(); + CreateTask(DebugMenu_80789CC, 80); + return TRUE; } NAKED -- cgit v1.2.3 From cc8b69676d79bd0791373dce093a33b5e831de49 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 18:59:40 -0400 Subject: through DebugMenu_8078D30 --- data/start_menu_debug.s | 71 ------- src/debug/start_menu_debug.c | 451 +++++++++++++++---------------------------- 2 files changed, 155 insertions(+), 367 deletions(-) diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s index 63ec49eec..94122fce7 100644 --- a/data/start_menu_debug.s +++ b/data/start_menu_debug.s @@ -6,79 +6,8 @@ .section .rodata -Str_839C438:: @ 0x839C438 - .string "ポロック グループ{STR_VAR_1}$" - - .align 2 -gUnknown_Debug_839C444:: - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - -Str_839C574:: @ 0x839C574 -gDebug0x839C574:: - .string "write to flash$" - -Str_839C583:: @ 0x839C583 - .string "read from flash$" - .align 2 -gUnknown_Debug_839C594:: @ 0x839C594 - .4byte gDebug0x839C574, DebugMenu_8078C80+1 - .4byte Str_839C583, DebugMenu_8078D30+1 - -Str_839C5A4:: @ 0x839C5A4 - .string "Press A, begin to write\n" - .string "Press B, cancel$" - -Str_839C5CC:: @ 0x839C5CC - .string "かきこみ せいこう$" - -Str_839C5D6:: @ 0x839C5D6 - .string "よみこみせいこう$" - -Str_839C5DF:: @ 0x839C5DF - .string "かきこみ しっぱい$" - -Str_839C5E9:: @ 0x839C5E9 - .string "よみこみ しっぱい$" - .align 1 gUnknown_Debug_839C5F4:: .byte 0x00, 0x00, 0xe7, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x09, 0x03, 0x00, 0x00 diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index bd0b06828..75e1b028d 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -43,6 +43,8 @@ #include "data2.h" #include "item.h" #include "reset_rtc_screen.h" +#include "pokeblock.h" +#include "ewram.h" // berry_blender.c extern void unref_sub_80524BC(void); @@ -66,6 +68,13 @@ void DebugMenu_807806C(u8 taskId); void DebugMenu_8078A14(u8 taskId); void DebugMenu_8078AA4(u8 taskId); void DebugMenu_8078B38(u8 taskId); +bool8 DebugMenu_8078C80(void); +bool8 DebugMenu_8078CA8(void); +bool8 DebugMenu_8078CE4(void); +bool8 DebugMenu_8078D30(void); +bool8 DebugMenu_8078D7C(void); +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -2323,320 +2332,170 @@ u8 DebugMenu_BattleTowerStages(void) return TRUE; } -NAKED -void DebugMenu_8078B70() -{ - asm( - " push {lr}\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " lsr r1, r1, #0x10\n" - " ldr r0, ._526 @ gStringVar1\n" - " mov r2, #0x0\n" - " mov r3, #0x1\n" - " bl ConvertIntToHexStringN\n" - " ldr r0, ._526 + 4 @ Str_839C438\n" - " bl sub_8071F40\n" - " pop {r0}\n" - " bx r0\n" - "._527:\n" - " .align 2, 0\n" - "._526:\n" - " .word gStringVar1\n" - " .word Str_839C438\n" - "\n" - ); -} +const u8 Str_839C438[] = _("ポロック グループ{STR_VAR_1}"); + +void DebugMenu_8078B70(u16 value) +{ + ConvertIntToHexStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1); + sub_8071F40(Str_839C438); +} + +const struct Pokeblock gUnknown_Debug_839C444[] = { + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {PBLOCK_CLR_BLACK, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00}, + {} +}; -NAKED -void DebugMenu_8078B94() +void DebugMenu_8078B94(void) { - asm( - " push {r4, r5, lr}\n" - " mov r3, #0x0\n" - " ldr r1, ._531 @ gUnknown_Debug_839C444\n" - " ldrb r0, [r1]\n" - " cmp r0, #0\n" - " beq ._529 @cond_branch\n" - " ldr r5, ._531 + 4 @ gSaveBlock1\n" - " add r4, r1, #0\n" - "._530:\n" - " lsl r0, r3, #0x3\n" - " add r2, r0, r5\n" - " add r0, r0, r4\n" - " ldr r1, [r0, #0x4]\n" - " ldr r0, [r0]\n" - " str r0, [r2]\n" - " str r1, [r2, #0x4]\n" - " add r0, r3, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r3, r0, #0x18\n" - " cmp r3, #0x27\n" - " bhi ._529 @cond_branch\n" - " lsl r0, r3, #0x3\n" - " add r0, r0, r4\n" - " ldrb r0, [r0]\n" - " cmp r0, #0\n" - " bne ._530 @cond_branch\n" - "._529:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._532:\n" - " .align 2, 0\n" - "._531:\n" - " .word gUnknown_Debug_839C444\n" - " .word gSaveBlock1+0x7f8\n" - "\n" - ); + u8 i; + + for (i = 0; i < ARRAY_COUNT(gSaveBlock1.pokeblocks); i++) + { + if (gUnknown_Debug_839C444[i].color == 0) + break; + gSaveBlock1.pokeblocks[i] = gUnknown_Debug_839C444[i]; + } } -NAKED -void DebugMenu_8078BD4() +void DebugMenu_8078BD4(u8 taskId) { - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " ldr r1, ._536 @ gTasks\n" - " add r4, r0, r1\n" - " mov r1, #0x0\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0\n" - " beq ._533 @cond_branch\n" - " cmp r0, #0x1\n" - " beq ._534 @cond_branch\n" - " b ._545\n" - "._537:\n" - " .align 2, 0\n" - "._536:\n" - " .word gTasks+0x8\n" - "._533:\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - " ldrh r0, [r4]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4]\n" - " b ._545\n" - "._534:\n" - " ldr r2, ._541 @ gMain\n" - " ldrh r1, [r2, #0x2e]\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._539 @cond_branch\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " bl DebugMenu_8078B94\n" - " b ._545\n" - "._542:\n" - " .align 2, 0\n" - "._541:\n" - " .word gMain\n" - "._539:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._543 @cond_branch\n" - " bl Menu_EraseScreen\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - " bl ScriptContext2_Disable\n" - " b ._545\n" - "._543:\n" - " add r0, r4, #2\n" - " ldrh r3, [r2, #0x30]\n" - " mov r1, #0x0\n" - " mov r2, #0x4\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._545 @cond_branch\n" - " ldrh r0, [r4, #0x2]\n" - " bl DebugMenu_8078B70\n" - "._545:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + DebugMenu_8078B70(data[1]); + data[0]++; + break; + case 1: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_PINPON); + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + DebugMenu_8078B94(); + } + else if (gMain.newKeys & B_BUTTON) + { + Menu_EraseScreen(); + DestroyTask(taskId); + ScriptContext2_Disable(); + } + else if (DebugMenu_8077DD8(data + 1, 0, 4, gMain.newAndRepeatedKeys) == TRUE) + { + DebugMenu_8078B70(data[1]); + } + break; + } } -NAKED u8 DebugMenu_CheckPKBLCK() { - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._546 @ DebugMenu_8078BD4\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._547:\n" - " .align 2, 0\n" - "._546:\n" - " .word DebugMenu_8078BD4+1\n" - "\n" - ); + CloseMenu(); + CreateTask(DebugMenu_8078BD4, 80); + ScriptContext2_Enable(); + return TRUE; } -NAKED -bool8 DebugMenu_8078C80() +const u8 Str_839C574[] = _("write to flash"); +const u8 Str_839C583[] = _("read from flash"); + +const struct MenuAction gUnknown_Debug_839C594[] = { + {Str_839C574, DebugMenu_8078C80}, + {Str_839C583, DebugMenu_8078D30} +}; + +const u8 Str_839C5A4[] = _("Press A, begin to write\n" + "Press B, cancel"); + +bool8 DebugMenu_8078C80(void) { - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._548 @ Str_839C5A4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._548 + 4 @ gMenuCallback\n" - " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._549:\n" - " .align 2, 0\n" - "._548:\n" - " .word Str_839C5A4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CA8+1\n" - "\n" - ); + Menu_DisplayDialogueFrame(); + Menu_PrintText(Str_839C5A4, 2, 15); + gMenuCallback = DebugMenu_8078CA8; + return FALSE; } -NAKED -bool8 DebugMenu_8078CA8() +bool8 DebugMenu_8078CA8(void) { - asm( - " push {lr}\n" - " ldr r0, ._552 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._550 @cond_branch\n" - " ldr r1, ._552 + 4 @ gMenuCallback\n" - " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " b ._555\n" - "._553:\n" - " .align 2, 0\n" - "._552:\n" - " .word gMain\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078CE4+1\n" - "._550:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._554 @cond_branch\n" - " mov r0, #0x0\n" - " b ._555\n" - "._554:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._555:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); + if (gMain.newKeys & A_BUTTON) + { + gMenuCallback = DebugMenu_8078CE4; + return FALSE; + } + if (gMain.newKeys & B_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; } -NAKED -bool8 DebugMenu_8078CE4() +const u8 Str_839C5CC[] =_("かきこみ せいこう"); +const u8 Str_839C5D6[] =_("よみこみせいこう"); +const u8 Str_839C5DF[] =_("かきこみ しっぱい"); +const u8 Str_839C5E9[] =_("よみこみ しっぱい"); + +bool8 DebugMenu_8078CE4(void) { - asm( - " push {lr}\n" - " ldr r1, ._558 @ \n" - " mov r2, #0x80\n" - " lsl r2, r2, #0xa\n" - " mov r0, #0x0\n" - " bl DebugMenu_8078E40\n" - " cmp r0, #0x1\n" - " bne ._556 @cond_branch\n" - " ldr r0, ._558 + 4 @ \n" - " ldr r1, ._558 + 8 @ \n" - " bl StringCopy\n" - " b ._557\n" - "._559:\n" - " .align 2, 0\n" - "._558:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5CC\n" - "._556:\n" - " ldr r0, ._560 @ gStringVar4\n" - " ldr r1, ._560 + 4 @ Str_839C5DF\n" - " bl StringCopy\n" - "._557:\n" - " ldr r1, ._560 + 8 @ gMenuCallback\n" - " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._561:\n" - " .align 2, 0\n" - "._560:\n" - " .word gStringVar4\n" - " .word Str_839C5DF\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); + if (DebugMenu_8078E40(0, gSharedMem, 0x20000) == TRUE) + StringCopy(gStringVar4, Str_839C5CC); + else + StringCopy(gStringVar4, Str_839C5DF); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; } -NAKED -bool8 DebugMenu_8078D30() +bool8 DebugMenu_8078D30(void) { - asm( - " push {r4, r5, r6, lr}\n" - " ldr r5, ._563 @ \n" - " mov r4, #0x0\n" - " mov r6, #0x80\n" - " lsl r6, r6, #0x5\n" - "._562:\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E68\n" - " add r5, r5, r6\n" - " add r0, r4, #1\n" - " lsl r0, r0, #0x18\n" - " lsr r4, r0, #0x18\n" - " cmp r4, #0x1f\n" - " bls ._562 @cond_branch\n" - " ldr r0, ._563 + 4 @ \n" - " ldr r1, ._563 + 8 @ \n" - " bl StringCopy\n" - " ldr r1, ._563 + 12 @ \n" - " ldr r0, ._563 + 16 @ \n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "._564:\n" - " .align 2, 0\n" - "._563:\n" - " .word +0x2000000\n" - " .word gStringVar4\n" - " .word Str_839C5D6\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078D7C+1\n" - "\n" - ); + u8 * data = gSharedMem; + u8 i; + + for (i = 0; i < 32; i++) + { + DebugMenu_8078E68(i, data, 0x1000); + data += 0x1000; + } + StringCopy(gStringVar4, Str_839C5D6); + gMenuCallback = DebugMenu_8078D7C; + return FALSE; } NAKED @@ -2738,7 +2597,7 @@ bool8 DebugMenu_8078DF0() } NAKED -bool8 DebugMenu_8078E04() +bool32 DebugMenu_8078E04(u16 a0, u8 * a1, u32 a2) { asm( " push {r4, r5, r6, lr}\n" @@ -2781,7 +2640,7 @@ bool8 DebugMenu_8078E04() } NAKED -bool8 DebugMenu_8078E40() +bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2) { asm( " push {r4, r5, r6, lr}\n" @@ -2806,7 +2665,7 @@ bool8 DebugMenu_8078E40() } NAKED -void DebugMenu_8078E68() +void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2) { asm( " push {r4, lr}\n" -- cgit v1.2.3 From e651e6a7847bb8f1a55506c8f7729176f84fabf9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 8 Apr 2018 21:41:23 -0400 Subject: Remaining functions and data in start_menu_debug --- data/start_menu_debug.s | 27 -- include/start_menu.h | 4 + ld_script.txt | 1 - src/debug/start_menu_debug.c | 897 ++++++++++++------------------------------- sym_common.txt | 3 +- 5 files changed, 244 insertions(+), 688 deletions(-) delete mode 100644 data/start_menu_debug.s diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s deleted file mode 100644 index 94122fce7..000000000 --- a/data/start_menu_debug.s +++ /dev/null @@ -1,27 +0,0 @@ - .if DEBUG - -#include "constants/moves.h" - .include "include/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 - -gUnknown_Debug_839C5F4:: - .byte 0x00, 0x00, 0xe7, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x09, 0x03, 0x00, 0x00 - -Str_839C60C:: @ 0x839C60C -gDebug0x839C60C:: - .string "Set FLASH ERR$" - -Str_839C61A:: @ 0x839C61A - .string "abcde; abcde: ABCDE; ABCDE:\p" - .string "Tableaux des verbes du 2{SUPER_E} groupe.\p" - .string "La1{SUPER_RE} chose à apprendre c’est de lire.\p" - .string "Tableaux des verbes du 1{SUPER_ER} groupe.\p" - .string "“あいうえおかきくけコさしすせそたちつてとな”\n" - .string "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p" - .string "をんゃゅょアイウエオカキクケサシスルレロワ,$" - - .endif diff --git a/include/start_menu.h b/include/start_menu.h index ee76e9863..df4efda6d 100644 --- a/include/start_menu.h +++ b/include/start_menu.h @@ -12,4 +12,8 @@ void sub_8071B28(void); void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId); bool8 debug_sub_8075C30(void); +#if DEBUG +extern u32 gUnknown_Debug_03004BD0; +#endif // DEBUG + #endif // GUARD_STARTER_CHOOSE_H diff --git a/ld_script.txt b/ld_script.txt index d6a7bfb98..ac2711841 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -538,7 +538,6 @@ SECTIONS { src/start_menu.o(.rodata); src/debug/start_menu_debug.o(.data); src/debug/start_menu_debug.o(.rodata); - data/start_menu_debug.o(.rodata); src/menu.o(.rodata); src/tileset_anim.o(.rodata); src/palette.o(.rodata); diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index 75e1b028d..c1f508ebc 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -45,6 +45,8 @@ #include "reset_rtc_screen.h" #include "pokeblock.h" #include "ewram.h" +#include "gba/flash_internal.h" +#include "gba/m4a_internal.h" // berry_blender.c extern void unref_sub_80524BC(void); @@ -73,8 +75,12 @@ bool8 DebugMenu_8078CA8(void); bool8 DebugMenu_8078CE4(void); bool8 DebugMenu_8078D30(void); bool8 DebugMenu_8078D7C(void); +bool8 DebugMenu_8078DA4(void); +bool8 DebugMenu_8078DF0(void); bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2); void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2); +void DebugMenu_8078F68(u8 taskId); +void DebugMenu_8079020(u8 taskId); u8 DebugMenu_Exit(void); u8 DebugMenu_OpenWatanabe(void); @@ -2498,672 +2504,247 @@ bool8 DebugMenu_8078D30(void) return FALSE; } -NAKED -bool8 DebugMenu_8078D7C() -{ - asm( - " push {lr}\n" - " bl Menu_DisplayDialogueFrame\n" - " ldr r0, ._565 @ gStringVar4\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " ldr r1, ._565 + 4 @ gMenuCallback\n" - " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._566:\n" - " .align 2, 0\n" - "._565:\n" - " .word gStringVar4\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DA4+1\n" - "\n" - ); -} - -NAKED -bool8 DebugMenu_8078DA4() -{ - asm( - " push {lr}\n" - " ldr r0, ._569 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " bne ._567 @cond_branch\n" - " mov r0, #0x0\n" - " b ._568\n" - "._570:\n" - " .align 2, 0\n" - "._569:\n" - " .word gMain\n" - "._567:\n" - " bl CloseMenu\n" - " mov r0, #0x1\n" - "._568:\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -NAKED -u8 DebugMenu_MeTooBackupMan() -{ - asm( - " push {lr}\n" - " bl Menu_EraseScreen\n" - " ldr r0, ._571 @ gUnknown_Debug_839C594\n" - " mov r1, #0xc\n" - " mov r2, #0x2\n" - " bl DebugMenu_8077D24\n" - " ldr r1, ._571 + 4 @ gMenuCallback\n" - " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n" - " str r0, [r1]\n" - " mov r0, #0x0\n" - " pop {r1}\n" - " bx r1\n" - "._572:\n" - " .align 2, 0\n" - "._571:\n" - " .word gUnknown_Debug_839C594\n" - " .word gMenuCallback\n" - " .word DebugMenu_8078DF0+1\n" - "\n" - ); -} - -NAKED +bool8 DebugMenu_8078D7C(void) +{ + Menu_DisplayDialogueFrame(); + Menu_PrintText(gStringVar4, 2, 15); + gMenuCallback = DebugMenu_8078DA4; + return FALSE; +} + +bool8 DebugMenu_8078DA4(void) +{ + if (gMain.newKeys & A_BUTTON) + { + CloseMenu(); + return TRUE; + } + return FALSE; +} + +u8 DebugMenu_MeTooBackupMan(void) +{ + Menu_EraseScreen(); + DebugMenu_8077D24(gUnknown_Debug_839C594, 12, ARRAY_COUNT(gUnknown_Debug_839C594)); + gMenuCallback = DebugMenu_8078DF0; + return FALSE; +} + bool8 DebugMenu_8078DF0() { - asm( - " push {lr}\n" - " ldr r0, ._573 @ gUnknown_Debug_839C594\n" - " bl DebugMenu_8077D78\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " pop {r1}\n" - " bx r1\n" - "._574:\n" - " .align 2, 0\n" - "._573:\n" - " .word gUnknown_Debug_839C594\n" - "\n" - ); -} - -NAKED + return DebugMenu_8077D78(gUnknown_Debug_839C594); +} + bool32 DebugMenu_8078E04(u16 a0, u8 * a1, u32 a2) { - asm( - " push {r4, r5, r6, lr}\n" - " add r6, r1, #0\n" - " add r5, r2, #0\n" - " b ._575\n" - "._577:\n" - " ldr r0, ._579 @ 0xfffff000\n" - " add r5, r5, r0\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " add r6, r6, r0\n" - " add r0, r4, #1\n" - "._575:\n" - " lsl r0, r0, #0x10\n" - " lsr r4, r0, #0x10\n" - " add r0, r4, #0\n" - " add r1, r6, #0\n" - " bl ProgramFlashSectorAndVerify\n" - " cmp r0, #0\n" - " bne ._576 @cond_branch\n" - " mov r0, #0x80\n" - " lsl r0, r0, #0x5\n" - " cmp r5, r0\n" - " bhi ._577 @cond_branch\n" - " mov r0, #0x1\n" - " b ._578\n" - "._580:\n" - " .align 2, 0\n" - "._579:\n" - " .word 0xfffff000\n" - "._576:\n" - " mov r0, #0x0\n" - "._578:\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -NAKED + while (1) + { + if (ProgramFlashSectorAndVerify(a0, a1)) + return FALSE; + if (a2 <= 0x1000) + break; + a2 -= 0x1000; + a1 += 0x1000; + a0++; + } + return TRUE; +} + bool32 DebugMenu_8078E40(u8 a0, u8 * a1, u32 a2) { - asm( - " push {r4, r5, r6, lr}\n" - " add r4, r0, #0\n" - " add r5, r1, #0\n" - " add r6, r2, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl m4aSoundVSyncOff\n" - " add r0, r4, #0\n" - " add r1, r5, #0\n" - " add r2, r6, #0\n" - " bl DebugMenu_8078E04\n" - " add r4, r0, #0\n" - " bl m4aSoundVSyncOn\n" - " add r0, r4, #0\n" - " pop {r4, r5, r6}\n" - " pop {r1}\n" - " bx r1\n" - "\n" - ); -} - -NAKED + bool32 result; + m4aSoundVSyncOff(); + result = DebugMenu_8078E04(a0, a1, a2); + m4aSoundVSyncOn(); + return result; +} + void DebugMenu_8078E68(u8 a0, u8 * a1, u32 a2) { - asm( - " push {r4, lr}\n" - " add r4, r1, #0\n" - " add r3, r2, #0\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r1, #0x0\n" - " add r2, r4, #0\n" - " bl ReadFlash\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -NAKED -void DebugMenu_8078E80() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " mov r0, #0x2\n" - " mov r1, #0xf\n" - " mov r2, #0x16\n" - " mov r3, #0x10\n" - " bl Menu_BlankWindowRect\n" - " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " lsl r0, r0, #0x3\n" - " add r0, r0, r1\n" - " ldrb r1, [r0, #0x4]\n" - " mov r0, #0xd0\n" - " mov r2, #0xf\n" - " bl sub_8071F60\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "._582:\n" - " .align 2, 0\n" - "._581:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -NAKED -void DebugMenu_8078EB0() -{ - asm( - " push {r4, r5, lr}\n" - " add r5, r0, #0\n" - " ldr r4, ._583 @ gStringVar1\n" - " mov r0, #0x2\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " mov r3, #0x3\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x2\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x5\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x4\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x6\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " mov r0, #0xf0\n" - " mov r1, #0x8\n" - " mov r2, #0x11\n" - " bl sub_8071F60\n" - " mov r0, #0x6\n" - " ldsh r1, [r5, r0]\n" - " add r0, r4, #0\n" - " mov r2, #0x2\n" - " mov r3, #0x2\n" - " bl ConvertIntToDecimalStringN\n" - " add r0, r4, #0\n" - " mov r1, #0x9\n" - " mov r2, #0x11\n" - " bl Menu_PrintText\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._584:\n" - " .align 2, 0\n" - "._583:\n" - " .word gStringVar1\n" - "\n" - ); -} - -NAKED -void DebugMenu_8078F1C() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r4, r0, #0x2\n" - " add r4, r4, r0\n" - " lsl r4, r4, #0x3\n" - " ldr r6, ._585 @ gTasks\n" - " add r5, r4, r6\n" - " mov r0, #0x0\n" - " strh r0, [r5]\n" - " ldr r1, ._585 + 4 @ gSaveBlock2\n" - " ldrh r0, [r1, #0xe]\n" - " strh r0, [r5, #0x2]\n" - " ldrb r0, [r1, #0x10]\n" - " strh r0, [r5, #0x4]\n" - " ldrb r0, [r1, #0x11]\n" - " strh r0, [r5, #0x6]\n" - " bl Menu_DisplayDialogueFrame\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078EB0\n" - " add r0, r5, #0\n" - " bl DebugMenu_8078E80\n" - " sub r6, r6, #0x8\n" - " add r4, r4, r6\n" - " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n" - " str r0, [r4]\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._586:\n" - " .align 2, 0\n" - "._585:\n" - " .word gTasks+0x8\n" - " .word gSaveBlock2\n" - " .word DebugMenu_8078F68+1\n" - "\n" - ); -} - -NAKED -void DebugMenu_8078F68() -{ - asm( - " push {r4, r5, r6, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " lsl r1, r0, #0x2\n" - " add r1, r1, r0\n" - " lsl r5, r1, #0x3\n" - " ldr r6, ._589 @ gTasks\n" - " add r4, r5, r6\n" - " ldr r3, ._589 + 4 @ gMain\n" - " ldrh r1, [r3, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._587 @cond_branch\n" - " ldr r1, ._589 + 8 @ gSaveBlock2\n" - " ldrh r0, [r4, #0x2]\n" - " strh r0, [r1, #0xe]\n" - " ldrh r0, [r4, #0x4]\n" - " strb r0, [r1, #0x10]\n" - " ldrh r0, [r4, #0x6]\n" - " strb r0, [r1, #0x11]\n" - " mov r0, #0x49\n" - " bl PlaySE\n" - " b ._588\n" - "._590:\n" - " .align 2, 0\n" - "._589:\n" - " .word gTasks+0x8\n" - " .word gMain\n" - " .word gSaveBlock2\n" - "._587:\n" - " mov r0, #0x2\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._591 @cond_branch\n" - "._588:\n" - " add r0, r6, #0\n" - " sub r0, r0, #0x8\n" - " add r0, r5, r0\n" - " ldr r1, ._593 @ DebugMenu_8079020\n" - " str r1, [r0]\n" - " b ._601\n" - "._594:\n" - " .align 2, 0\n" - "._593:\n" - " .word DebugMenu_8079020+1\n" - "._591:\n" - " mov r0, #0x20\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._595 @cond_branch\n" - " ldrh r1, [r4]\n" - " mov r2, #0x0\n" - " ldsh r0, [r4, r2]\n" - " cmp r0, #0\n" - " beq ._601 @cond_branch\n" - " sub r0, r1, #1\n" - " b ._597\n" - "._595:\n" - " mov r0, #0x10\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._598 @cond_branch\n" - " ldrh r0, [r4]\n" - " cmp r0, #0x1\n" - " bhi ._601 @cond_branch\n" - " add r0, r0, #0x1\n" - "._597:\n" - " strh r0, [r4]\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078E80\n" - " b ._601\n" - "._598:\n" - " mov r0, #0x0\n" - " ldsh r2, [r4, r0]\n" - " lsl r2, r2, #0x3\n" - " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n" - " add r2, r2, r0\n" - " ldrb r0, [r2, #0x5]\n" - " lsl r0, r0, #0x1\n" - " add r0, r4, r0\n" - " ldrh r1, [r2]\n" - " ldrh r2, [r2, #0x2]\n" - " ldrh r3, [r3, #0x30]\n" - " bl DebugMenu_8077DD8\n" - " cmp r0, #0x1\n" - " bne ._601 @cond_branch\n" - " add r0, r4, #0\n" - " bl DebugMenu_8078EB0\n" - "._601:\n" - " pop {r4, r5, r6}\n" - " pop {r0}\n" - " bx r0\n" - "._603:\n" - " .align 2, 0\n" - "._602:\n" - " .word gUnknown_Debug_839C5F4\n" - "\n" - ); -} - -NAKED -void DebugMenu_8079020() -{ - asm( - " push {r4, lr}\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r4, #0\n" - " bl DestroyTask\n" - " pop {r4}\n" - " pop {r0}\n" - " bx r0\n" - "\n" - ); -} - -NAKED -u8 DebugMenu_PTime() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._604 @ DebugMenu_8078F1C\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._605:\n" - " .align 2, 0\n" - "._604:\n" - " .word DebugMenu_8078F1C+1\n" - "\n" - ); -} - -NAKED -void DebugMenu_8079058() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._610 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r0, #0x8\n" - " ldsh r1, [r4, r0]\n" - " cmp r1, #0x1\n" - " beq ._606 @cond_branch\n" - " cmp r1, #0x1\n" - " bgt ._607 @cond_branch\n" - " cmp r1, #0\n" - " beq ._608 @cond_branch\n" - " b ._620\n" - "._611:\n" - " .align 2, 0\n" - "._610:\n" - " .word gTasks\n" - "._607:\n" - " cmp r1, #0x2\n" - " beq ._612 @cond_branch\n" - " b ._620\n" - "._608:\n" - " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n" - " str r1, [r0]\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._614\n" - "._616:\n" - " .align 2, 0\n" - "._615:\n" - " .word gUnknown_Debug_03004BD0\n" - "._606:\n" - " ldr r0, ._618 @ gDebug0x839C60C\n" - " mov r1, #0x4\n" - " mov r2, #0xf\n" - " bl Menu_PrintText\n" - " mov r0, #0x14\n" - " mov r1, #0x8\n" - " mov r2, #0x1\n" - " bl DisplayYesNoMenu\n" - "._614:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._620\n" - "._619:\n" - " .align 2, 0\n" - "._618:\n" - " .word gDebug0x839C60C\n" - "._612:\n" - " bl Menu_ProcessInputNoWrap_\n" - " lsl r0, r0, #0x18\n" - " asr r1, r0, #0x18\n" - " mov r0, #0x2\n" - " neg r0, r0\n" - " cmp r1, r0\n" - " beq ._620 @cond_branch\n" - " cmp r1, #0\n" - " bne ._621 @cond_branch\n" - " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x1\n" - " b ._622\n" - "._624:\n" - " .align 2, 0\n" - "._623:\n" - " .word gUnknown_Debug_03004BD0\n" - "._621:\n" - " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n" - " mov r0, #0x0\n" - "._622:\n" - " str r0, [r1]\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._620:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._626:\n" - " .align 2, 0\n" - "._625:\n" - " .word gUnknown_Debug_03004BD0\n" - "\n" - ); -} - -NAKED -u8 DebugMenu_OpenMurakawa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._627 @ DebugMenu_8079058\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " mov r0, #0x1\n" - " pop {r1}\n" - " bx r1\n" - "._628:\n" - " .align 2, 0\n" - "._627:\n" - " .word DebugMenu_8079058+1\n" - "\n" - ); -} - -NAKED -void DebugMenu_8079110() -{ - asm( - " push {r4, r5, lr}\n" - " lsl r0, r0, #0x18\n" - " lsr r5, r0, #0x18\n" - " ldr r1, ._633 @ gTasks\n" - " lsl r0, r5, #0x2\n" - " add r0, r0, r5\n" - " lsl r0, r0, #0x3\n" - " add r4, r0, r1\n" - " mov r1, #0x8\n" - " ldsh r0, [r4, r1]\n" - " cmp r0, #0x1\n" - " beq ._629 @cond_branch\n" - " cmp r0, #0x1\n" - " bgt ._630 @cond_branch\n" - " cmp r0, #0\n" - " beq ._631 @cond_branch\n" - " b ._642\n" - "._634:\n" - " .align 2, 0\n" - "._633:\n" - " .word gTasks\n" - "._630:\n" - " cmp r0, #0x2\n" - " beq ._635 @cond_branch\n" - " b ._642\n" - "._631:\n" - " bl Menu_DisplayDialogueFrame\n" - " b ._637\n" - "._629:\n" - " ldr r0, ._639 @ Str_839C61A\n" - " mov r1, #0x2\n" - " mov r2, #0xf\n" - " bl MenuPrintMessage\n" - "._637:\n" - " ldrh r0, [r4, #0x8]\n" - " add r0, r0, #0x1\n" - " strh r0, [r4, #0x8]\n" - " b ._642\n" - "._640:\n" - " .align 2, 0\n" - "._639:\n" - " .word Str_839C61A\n" - "._635:\n" - " bl Menu_UpdateWindowText\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " ldr r0, ._643 @ gMain\n" - " ldrh r1, [r0, #0x2e]\n" - " mov r0, #0x1\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._642 @cond_branch\n" - " bl Menu_EraseScreen\n" - " bl ScriptContext2_Disable\n" - " add r0, r5, #0\n" - " bl DestroyTask\n" - "._642:\n" - " pop {r4, r5}\n" - " pop {r0}\n" - " bx r0\n" - "._644:\n" - " .align 2, 0\n" - "._643:\n" - " .word gMain\n" - "\n" - ); -} - -NAKED -u8 DebugMenu_OpenKiwa() -{ - asm( - " push {lr}\n" - " bl CloseMenu\n" - " ldr r0, ._645 @ DebugMenu_8079110\n" - " mov r1, #0x50\n" - " bl CreateTask\n" - " bl ScriptContext2_Enable\n" - " pop {r1}\n" - " bx r1\n" - "._646:\n" - " .align 2, 0\n" - "._645:\n" - " .word DebugMenu_8079110+1\n" - "\n" - ); + ReadFlash(a0, 0, a1, a2); +} + +struct GameTimeDebugMenuStruct { + u16 unk0; + u16 unk2; + u8 unk4; + u8 unk5; +}; + +const struct GameTimeDebugMenuStruct gUnknown_Debug_839C5F4[] = { + {0, 999, 2, 1}, + {0, 59, 6, 2}, + {0, 59, 9, 3} +}; + +void DebugMenu_8078E80(s16 * a0) +{ + Menu_BlankWindowRect(2, 15, 22, 16); + sub_8071F60(0xd0, gUnknown_Debug_839C5F4[*a0].unk4, 15); +} + +void DebugMenu_8078EB0(s16 * a0) +{ + ConvertIntToDecimalStringN(gStringVar1, a0[1], STR_CONV_MODE_RIGHT_ALIGN, 3); + Menu_PrintText(gStringVar1, 2, 17); + sub_8071F60(0xf0, 5, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[2], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 6, 17); + sub_8071F60(0xf0, 8, 17); + ConvertIntToDecimalStringN(gStringVar1, a0[3], STR_CONV_MODE_LEADING_ZEROS, 2); + Menu_PrintText(gStringVar1, 9, 17); +} + +void DebugMenu_8078F1C(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + data[0] = 0; + data[1] = gSaveBlock2.playTimeHours; + data[2] = gSaveBlock2.playTimeMinutes; + data[3] = gSaveBlock2.playTimeSeconds; + + Menu_DisplayDialogueFrame(); + DebugMenu_8078EB0(data); + DebugMenu_8078E80(data); + gTasks[taskId].func = DebugMenu_8078F68; +} + +void DebugMenu_8078F68(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + if (gMain.newKeys & A_BUTTON) + { + gSaveBlock2.playTimeHours = data[1]; + gSaveBlock2.playTimeMinutes = data[2]; + gSaveBlock2.playTimeSeconds = data[3]; + PlaySE(SE_PINPON); + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].func = DebugMenu_8079020; + } + else if (gMain.newKeys & DPAD_LEFT) + { + if ((u16)data[0] > 0) + { + data[0]--; + DebugMenu_8078E80(data); + } + } + else if (gMain.newKeys & DPAD_RIGHT) + { + if ((u16)data[0] < 2) + { + data[0]++; + DebugMenu_8078E80(data); + } + } + else + { + const struct GameTimeDebugMenuStruct *r2 = gUnknown_Debug_839C5F4 + data[0]; + if (DebugMenu_8077DD8(data + r2->unk5, r2->unk0, r2->unk2, gMain.newAndRepeatedKeys) == TRUE) + DebugMenu_8078EB0(data); + } +} + +void DebugMenu_8079020(u8 taskId) +{ + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); +} + +u8 DebugMenu_PTime(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8078F1C, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 gDebug0x839C60C[] = _("Set FLASH ERR"); + +void DebugMenu_8079058(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + gUnknown_Debug_03004BD0 = 0; + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + Menu_PrintText(gDebug0x839C60C, 4, 15); + DisplayYesNoMenu(20, 8, 1); + gTasks[taskId].data[0]++; + break; + case 2: + switch (Menu_ProcessInputNoWrap_()) + { + case -2: + return; + case 0: + gUnknown_Debug_03004BD0 = 1; + break; + default: + gUnknown_Debug_03004BD0 = 0; + break; + } + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + break; + } +} + +u8 DebugMenu_OpenMurakawa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079058, 80); + ScriptContext2_Enable(); + return TRUE; +} + +const u8 Str_839C61A[] = _("abcde; abcde: ABCDE; ABCDE:\p" + "Tableaux des verbes du 2{SUPER_E} groupe.\p" + "La1{SUPER_RE} chose à apprendre c’est de lire.\p" + "Tableaux des verbes du 1{SUPER_ER} groupe.\p" + "“あいうえおかきくけコさしすせそたちつてとな”\n" + "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p" + "をんゃゅょアイウエオカキクケサシスルレロワ,"); + +void DebugMenu_8079110(u8 taskId) +{ + switch (gTasks[taskId].data[0]) + { + case 0: + Menu_DisplayDialogueFrame(); + gTasks[taskId].data[0]++; + break; + case 1: + MenuPrintMessage(Str_839C61A, 2, 15); + gTasks[taskId].data[0]++; + break; + case 2: + if (Menu_UpdateWindowText() && gMain.newKeys & A_BUTTON) + { + Menu_EraseScreen(); + ScriptContext2_Disable(); + DestroyTask(taskId); + } + break; + } +} + +u8 DebugMenu_OpenKiwa(void) +{ + CloseMenu(); + CreateTask(DebugMenu_8079110, 80); + ScriptContext2_Enable(); + // return TRUE; } #endif diff --git a/sym_common.txt b/sym_common.txt index 07ab0629f..42e4a8114 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -204,8 +204,7 @@ SYMBOL(gPokemonItemUseCallback, 4) SYMBOL(gMenuCallback, 4) #if DEBUG -gUnknown_Debug_03004BD0 = .; -. += 0x4; +SYMBOL(gUnknown_Debug_03004BD0, 4) #endif // sound.c -- cgit v1.2.3 From 5e9dabd92e84f8e7c5d136e6d408a99120ea1064 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 9 Apr 2018 13:57:20 -0400 Subject: Rename referenced unref_sub_* --- include/berry_blender.h | 6 ++++++ include/debug.h | 4 ++-- include/mystery_event_script.h | 4 ++-- include/safari_zone.h | 2 +- src/berry_blender.c | 2 +- src/debug/matsuda_debug_menu.c | 2 +- src/debug/start_menu_debug.c | 12 +++++------- src/debug/unk_debug_menu_3.c | 20 ++++++++++---------- src/debug/unknown_debug_menu.c | 2 +- src/mystery_event_script.c | 4 ++-- src/safari_zone.c | 2 +- 11 files changed, 32 insertions(+), 28 deletions(-) create mode 100644 include/berry_blender.h diff --git a/include/berry_blender.h b/include/berry_blender.h new file mode 100644 index 000000000..8aaf934e5 --- /dev/null +++ b/include/berry_blender.h @@ -0,0 +1,6 @@ +#ifndef GUARD_BERRY_BLENDER_H +#define GUARD_BERRY_BLENDER_H + +void debug_sub_80524BC(void); + +#endif //GUARD_BERRY_BLENDER_H diff --git a/include/debug.h b/include/debug.h index d725b349f..d090f8bed 100644 --- a/include/debug.h +++ b/include/debug.h @@ -12,7 +12,7 @@ void DebugMenu_8077048(void); // matsuda_debug_menu void sub_80AAF30(void); void Crash(const u8 *text); -bool8 unref_sub_80A9B28(void); +bool8 InitMatsudaDebugMenu(void); // tomomichi_debug_menu void debug_nullsub_66(void); @@ -29,7 +29,7 @@ extern const u8 gUnknown_Debug_842E350; extern const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[]; // unknown debug menu -int unref_sub_814A414(void); +int InitSogabeDebugMenu(void); // kagaya_debug_menu bool8 InitKagayaDebugMenu_A(void); diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h index a92bb6667..b86a2eed4 100644 --- a/include/mystery_event_script.h +++ b/include/mystery_event_script.h @@ -5,8 +5,8 @@ u32 RunMysteryEventScript(u8 *); void SetMysteryEventScriptStatus(u32 val); u16 GetRecordMixingGift(void); #if DEBUG -bool8 unref_sub_812620C(u8 *a1, const u8 * _a2); -bool8 unref_sub_81261B4(u8 *a1, const u8 * _a2); +bool8 debug_sub_812620C(u8 *a1, const u8 * _a2); +bool8 debug_sub_81261B4(u8 *a1, const u8 * _a2); #endif // DEBUG #endif // GUARD_MYSTERY_EVENT_SCRIPT_H diff --git a/include/safari_zone.h b/include/safari_zone.h index 08d635794..dd9ca8088 100644 --- a/include/safari_zone.h +++ b/include/safari_zone.h @@ -19,6 +19,6 @@ void SafariZoneGetPokeblockNameInFeeder(void); struct Pokeblock *unref_sub_80C8418(void); struct Pokeblock *SafariZoneGetActivePokeblock(void); void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index); -bool32 unref_sub_80C853C(void); +bool32 debug_sub_80C853C(void); #endif // GUARD_SAFARI_ZONE_H diff --git a/src/berry_blender.c b/src/berry_blender.c index 5d40ea321..cde189738 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -3276,7 +3276,7 @@ static bool8 Blender_PrintBlendingRanking(void) // debug menu goes here -void unref_sub_80524BC(void) +void debug_sub_80524BC(void) { ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c index 7a66ded57..c936af864 100644 --- a/src/debug/matsuda_debug_menu.c +++ b/src/debug/matsuda_debug_menu.c @@ -76,7 +76,7 @@ const struct MenuAction gMatsudaDebugMenuActions[] = {gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems}, }; -u8 unref_sub_80A9B28(void) +u8 InitMatsudaDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 17, 18); diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index c1f508ebc..549842c6a 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -47,9 +47,7 @@ #include "ewram.h" #include "gba/flash_internal.h" #include "gba/m4a_internal.h" - -// berry_blender.c -extern void unref_sub_80524BC(void); +#include "berry_blender.h" void debug_sub_8076BB4(u8); void debug_sub_8077CF4(u8 x, u8 y); @@ -461,7 +459,7 @@ u8 DebugMenu_8076CD4(void) u8 DebugMenu_8076CD8(void) { - SetMainCallback2(unref_sub_80524BC); + SetMainCallback2(debug_sub_80524BC); return 0; } @@ -801,7 +799,7 @@ u8 DebugMenu_Exit(void) u8 DebugMenu_OpenSogabe(void) { - return unref_sub_814A414(); + return InitSogabeDebugMenu(); } u8 DebugMenu_OpenTamada(void) @@ -816,7 +814,7 @@ u8 DebugMenu_OpenKagaya(void) u8 DebugMenu_OpenMatsuda(void) { - return unref_sub_80A9B28(); + return InitMatsudaDebugMenu(); } u8 DebugMenu_OpenNohara(void) @@ -1261,7 +1259,7 @@ const u8 Str_839BF1F[] = _("めのまえには\n" bool8 DebugMenu_8077B00(void) { Menu_EraseScreen(); - if (unref_sub_80C853C()) + if (debug_sub_80C853C()) sub_8071F40(Str_839BF14); else sub_8071F40(Str_839BF1F); diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c index 138b99104..aaffca383 100644 --- a/src/debug/unk_debug_menu_3.c +++ b/src/debug/unk_debug_menu_3.c @@ -21,7 +21,7 @@ size_t debug_sub_813C404(u8 * dest) { size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; memcpy(dest, gUnknown_Debug_845DAE1, size); - unref_sub_812620C(dest, gUnknown_Debug_845DAE1); + debug_sub_812620C(dest, gUnknown_Debug_845DAE1); return size; } @@ -32,7 +32,7 @@ size_t debug_sub_813C430(u8 * dest) { size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; memcpy(dest, gUnknown_Debug_845E3E0, size); - unref_sub_812620C(dest, gUnknown_Debug_845E3E0); + debug_sub_812620C(dest, gUnknown_Debug_845E3E0); return size; } @@ -43,7 +43,7 @@ size_t debug_sub_813C45C(u8 * dest) { size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; memcpy(dest, gUnknown_Debug_845E422, size); - unref_sub_812620C(dest, gUnknown_Debug_845E422); + debug_sub_812620C(dest, gUnknown_Debug_845E422); return size; } @@ -54,7 +54,7 @@ size_t debug_sub_813C488(u8 * dest) { size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; memcpy(dest, gUnknown_Debug_845E402, size); - unref_sub_812620C(dest, gUnknown_Debug_845E402); + debug_sub_812620C(dest, gUnknown_Debug_845E402); return size; } @@ -75,7 +75,7 @@ size_t debug_sub_813C4D4(u8 * dest) { size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; memcpy(dest, gUnknown_Debug_845E619, size); - unref_sub_81261B4(dest, gUnknown_Debug_845E619); + debug_sub_81261B4(dest, gUnknown_Debug_845E619); return size; } @@ -86,7 +86,7 @@ size_t debug_sub_813C500(u8 * dest) { size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; memcpy(dest, gUnknown_Debug_845E712, size); - unref_sub_812620C(dest, gUnknown_Debug_845E712); + debug_sub_812620C(dest, gUnknown_Debug_845E712); return size; } @@ -103,7 +103,7 @@ size_t debug_sub_813C52C(u8 * dest, u16 itemId) ptr += 3; ptr[0] = itemId; ptr[1] = itemId >> 8; - unref_sub_812620C(dest, gUnknown_Debug_845E797); + debug_sub_812620C(dest, gUnknown_Debug_845E797); return size; } @@ -152,7 +152,7 @@ size_t debug_sub_813C5B4(u8 * dest) berry[i] = saveBerry[i]; ClearEnigmaBerries(); - unref_sub_81261B4(dest, gUnknown_Debug_845DDB2); + debug_sub_81261B4(dest, gUnknown_Debug_845DDB2); return size; } @@ -248,7 +248,7 @@ size_t debug_sub_813C810(u8 * dest) memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); - unref_sub_812620C(dest, src); + debug_sub_812620C(dest, src); return size; } @@ -270,7 +270,7 @@ size_t debug_sub_813C888(u8 * dest) memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); - unref_sub_812620C(dest, src); + debug_sub_812620C(dest, src); return size; } diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c index ef3e0e66c..787e456d2 100644 --- a/src/debug/unknown_debug_menu.c +++ b/src/debug/unknown_debug_menu.c @@ -30,7 +30,7 @@ const struct MenuAction gUnknown_0842C29C[] = { {UnknownString_8thRound, sub_814A4B8} }; -int unref_sub_814A414(void) +int InitSogabeDebugMenu(void) { Menu_EraseScreen(); Menu_DrawStdWindowFrame(0, 0, 16, 18); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 83aa90102..58f7f8627 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -114,7 +114,7 @@ static void SetWord(u8 *ptr, u32 val) ptr[3] = val >> 24; } -bool8 unref_sub_81261B4(u8 *a1, const u8 * _a2) +bool8 debug_sub_81261B4(u8 *a1, const u8 * _a2) { int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12)) @@ -129,7 +129,7 @@ bool8 unref_sub_81261B4(u8 *a1, const u8 * _a2) return FALSE; } -bool8 unref_sub_812620C(u8 *a1, const u8 * _a2) +bool8 debug_sub_812620C(u8 *a1, const u8 * _a2) { int a2 = (int)_a2; if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12)) diff --git a/src/safari_zone.c b/src/safari_zone.c index f4f1d96a6..7cc8e16a0 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -236,7 +236,7 @@ static void DecrementFeederStepCounters(void) } } -bool32 unref_sub_80C853C(void) +bool32 debug_sub_80C853C(void) { SafariZoneGetPokeblockNameInFeeder(); -- cgit v1.2.3 From b7d7e5ec71d81ae8fed415080c7042e1f4c3aaa6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 9 Apr 2018 14:00:21 -0400 Subject: Rename me_script.inc to mystery_event_script.inc, debug_menu_3.s to debug_mystery_event_scripts.s --- data/debug_menu_3.s | 311 -------------------------------- data/debug_mystery_event_scripts.s | 311 ++++++++++++++++++++++++++++++++ include/macros.inc | 2 +- include/macros/me_script.inc | 88 --------- include/macros/mystery_event_script.inc | 88 +++++++++ ld_script.txt | 2 +- 6 files changed, 401 insertions(+), 401 deletions(-) delete mode 100644 data/debug_menu_3.s create mode 100644 data/debug_mystery_event_scripts.s delete mode 100644 include/macros/me_script.inc create mode 100644 include/macros/mystery_event_script.inc diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s deleted file mode 100644 index 37d7585b2..000000000 --- a/data/debug_menu_3.s +++ /dev/null @@ -1,311 +0,0 @@ -.if DEBUG -#include "constants/decorations.h" -#include "constants/flags.h" -#include "constants/game_stat.h" -#include "constants/items.h" -#include "constants/map_objects.h" -#include "constants/maps.h" -#include "constants/moves.h" -#include "constants/opponents.h" -#include "constants/songs.h" -#include "constants/species.h" -#include "constants/weather.h" -#include "constants/vars.h" - .include "include/macros.inc" - .include "constants/constants.inc" - .include "include/macros/event.inc" - - .section .rodata - -gUnknown_Debug_845DAE1:: - me_checkcompat gUnknown_Debug_845DAE1, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845DAFF, _0845DAFFEnd -_0845DAFF: - me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _845DB56, _845DB56End - me_setrecordmixinggift 0x1, 0x5, ITEM_EON_TICKET - me_runscript _0845DD0D - me_end - -_0845DB16: - .string "Lauf und besuche deinen Vater in der\n" - .string "ARENA von BLÜTENBURG CITY.$" - -_845DB56: - setvaddress _845DB56 - checkitem ITEM_EON_TICKET, 0x1 - compare RESULT, 0x1 - vgoto_if 0x1, _0845DBB4 - checkpcitem ITEM_EON_TICKET, 0x1 - compare RESULT, 0x1 - vgoto_if 0x1, _0845DBB4 - checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS - vgoto_if 0x1, _0845DBB4 - lock - faceplayer - vmessage _0845DBBE - waitmessage - waitbuttonpress - checkitemspace ITEM_EON_TICKET, 0x1 - compare RESULT, 0x0 - vgoto_if 0x1, _0845DBB5 - setorcopyvar VAR_SPECIAL_0, ITEM_EON_TICKET - setorcopyvar VAR_SPECIAL_1, 0x1 - callstd 0x0 - setflag FLAG_SYS_HAS_EON_TICKET - vmessage _0845DC00 - waitmessage - waitbuttonpress - release -_0845DBB4: - killscript -_0845DBB5: - vmessage _0845DC94 - waitmessage - waitbuttonpress - release - end - -_0845DBBE: - .string "VATER: {PLAYER}! Schön, dich zu sehen!\n" - .string "Hier ist ein Brief für dich, {PLAYER}.$" - -_0845DC00: - .string "VATER: Ich bin mir nicht sicher, es\n" - .string "könnte ein TICKET für eine Fähre sein.\p" - .string "Du solltest nach SEEGRASULB CITY gehen\n" - .string "und dich dort genauer erkundigen.$" - -_0845DC94: - .string "VATER: {PLAYER}, die BASIS-TASCHE\n" - .string "deines BEUTELS ist voll.\p" - .string "Lagere einige deiner Basis-Items in\n" - .string "deinem PC und komm dann wieder.$" -_845DB56End: - .size _845DB56, _845DB56End - _845DB56 - -_0845DD0D: - setvaddress _0845DD0D - checkitem ITEM_EON_TICKET, 0x1 - compare RESULT, 0x1 - vgoto_if 0x1, _0845DD53 - checkpcitem ITEM_EON_TICKET, 0x1 - compare RESULT, 0x1 - vgoto_if 0x1, _0845DD53 - checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS - vgoto_if 0x1, _0845DD53 - checkitemspace ITEM_EON_TICKET, 0x1 - compare RESULT, 0x0 - vgoto_if 0x1, _0845DD5B - vloadptr _0845DB16 - setmysteryeventstatus 0x2 - end - -_0845DD53: - vloadptr _0845DD63 - setmysteryeventstatus 0x3 - end - -_0845DD5B: - vloadptr _0845DD95 - setmysteryeventstatus 0x3 - end - -_0845DD63: - .string "Dieses GESCHEHEN kann nur einmal\n" - .string "gespielt werden.$" - -_0845DD95: - .string "Deine BASIS-TASCHE ist voll.$" -_0845DAFFEnd: - .size _0845DAFF, _0845DAFFEnd - _0845DAFF -gUnknown_Debug_845DAE1End:: - -gUnknown_Debug_845DDB2:: - me_checkcompat gUnknown_Debug_845DDB2, 4, 4, 4, 0x80 - me_checksum 0x0, _0845DDD0, _0845DDD0End -_0845DDD0: - me_setenigmaberry gUnknown_Debug_845DDD6 - me_end - -gUnknown_Debug_845DDD6:: - .space 0x530 -_0845DDD0End: - .size _0845DDD0, _0845DDD0End - _0845DDD0 -gUnknown_Debug_845DDB2End:: - -gUnknown_Debug_845E306:: - me_checkcompat gUnknown_Debug_845E306, 0x4, 0x4, 0x4, 0x80 - me_runscript _0845E329 - me_setmsg 0x2, _0845E34F - me_setmsg 0x3, _0845E387 - me_end - -_0845E329: - setvaddress _0845E329 - getpartysize - compare RESULT, 0x6 - vgoto_if 0x1, _0845E34C - givemon SPECIES_LUVDISC, 15, ITEM_BERRY_JUICE, 0x0, 0x0, 0x0 - setmysteryeventstatus 0x2 - end - -_0845E34C: - setmysteryeventstatus 0x3 - end - -_0845E34F: - .string "Ein POKéMON wurde in das Team des\n" - .string "Spielers aufgenommen.$" - -_0845E387: - .string "Das Team des Spielers ist vollständig.\n" - .string "Es kann kein weiteres POKéMON\l" - .string "aufgenommen werden.$" - -gUnknown_Debug_845E3E0:: - me_checkcompat gUnknown_Debug_845E3E0, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E3FE, _0845E3FEEnd -_0845E3FE: - me_giveribbon 0x0, 0x1 - me_end -_0845E3FEEnd: - .size _0845E3FE, _0845E3FEEnd - _0845E3FE -gUnknown_Debug_845E3E0End:: - -gUnknown_Debug_845E402:: - me_checkcompat gUnknown_Debug_845E402, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E420, _0845E420End -_0845E420: - me_givenationaldex - me_end -_0845E420End: - .size _0845E420, _0845E420End - _0845E420 -gUnknown_Debug_845E402End:: - -gUnknown_Debug_845E422:: - me_checkcompat gUnknown_Debug_845E422, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E440, _0845E440End -_0845E440: - me_addrareword 0x1 - me_end -_0845E440End: - .size _0845E440, _0845E440End - _0845E440 -gUnknown_Debug_845E422End:: - -gUnknown_Debug_845E443:: - me_checkcompat gUnknown_Debug_845E443, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E461, _0845E461End -_0845E461: - me_givepokemon gUnknown_Debug_845E467 - me_end - -gUnknown_Debug_845E467:: - .space 100 - -gUnknown_Debug_845E4CB:: - .space 36 -_0845E461End: - .size _0845E461, _0845E461End - _0845E461 -gUnknown_Debug_845E443End:: - -gUnknown_Debug_845E4EF:: - me_checkcompat gUnknown_Debug_845E4EF, 0x4, 0x4, 0x4, 0x80 - me_addtrainer gUnknown_Debug_845E506 - me_end - -gUnknown_Debug_845E506:: - .space 256 -gUnknown_Debug_845E4EFEnd:: - -gUnknown_Debug_845E606:: - me_checkcompat gUnknown_Debug_845E606, 0x4, 0x4, 0x4, 0x80 - me_enableresetrtc - me_end -gUnknown_Debug_845E606End:: - -gUnknown_Debug_845E619:: - me_checkcompat gUnknown_Debug_845E619, 0x4, 0x4, 0x4, 0x80 - me_checksum 0x0, _0845E637, _0845E637End -_0845E637: - me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _0845E683, _0845E683End - me_setmsg 0xff, _0845E64C - me_setstatus 0x2 - me_end - -_0845E64C: - .string "Besuche deinen Vater in der ARENA\n" - .string "von BLÜTENBURG CITY.$" - -_0845E683: - setvaddress _0845E683 - checkitem ITEM_GANLON_BERRY, 0x1 - compare RESULT, 0x1 - vgoto_if 0x1, _0845E6BF - checkpcitem ITEM_GANLON_BERRY, 0x1 - compare RESULT, 0x1 - vgoto_if 0x1, _0845E6BF - lock - faceplayer - vmessage _0845E6C0 - waitmessage - waitbuttonpress - setorcopyvar VAR_SPECIAL_0, ITEM_GANLON_BERRY - setorcopyvar VAR_SPECIAL_1, 0x1 - callstd 0x0 - release - killscript -_0845E6BF: - gotoram - -_0845E6C0: - .string "VATER: Hi, {PLAYER}!\p" - .string "Ich habe gerade diese seltene BEERE\n" - .string "erhalten. Ich schenke sie dir!$" -_0845E637End: - .size _0845E637, _0845E637End - _0845E637 -_0845E683End: - .size _0845E683, _0845E683End - _0845E683 -gUnknown_Debug_845E619End:: - -gUnknown_Debug_845E712:: - me_checkcompat gUnknown_Debug_845E712, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, _0845E730, _0845E730End -_0845E730: - me_runscript _0845E736 - me_end - -_0845E736: - setvaddress _0845E736 - bufferdecorationname 0x0, DECOR_REGISTEEL_DOLL - givedecoration DECOR_REGISTEEL_DOLL - compare RESULT, 0x0 - vgoto_if 0x1, _0845E755 - vloadptr _0845E75D - setmysteryeventstatus 0x2 - end - -_0845E755: - vloadptr _0845E771 - setmysteryeventstatus 0x3 - end - -_0845E75D: - .string "{STR_VAR_1} wurde übergeben.$" -_0845E771: - .string "Es ist kein Platz für {STR_VAR_1}\n" - .string "vorhanden...$" -_0845E730End: - .size _0845E730, _0845E730End - _0845E730 -gUnknown_Debug_845E712End:: - -gUnknown_Debug_845E797:: - me_checkcompat gUnknown_Debug_845E797, 0x4, 0x4, 0x4, 0x80 - me_crc 0x0, gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End -gUnknown_Debug_845E7B5:: - me_setrecordmixinggift 0x1, 0x3, ITEM_POTION - me_end -gUnknown_Debug_845E7B5End: - .size gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End - gUnknown_Debug_845E7B5 -gUnknown_Debug_845E797End:: - -.endif diff --git a/data/debug_mystery_event_scripts.s b/data/debug_mystery_event_scripts.s new file mode 100644 index 000000000..37d7585b2 --- /dev/null +++ b/data/debug_mystery_event_scripts.s @@ -0,0 +1,311 @@ +.if DEBUG +#include "constants/decorations.h" +#include "constants/flags.h" +#include "constants/game_stat.h" +#include "constants/items.h" +#include "constants/map_objects.h" +#include "constants/maps.h" +#include "constants/moves.h" +#include "constants/opponents.h" +#include "constants/songs.h" +#include "constants/species.h" +#include "constants/weather.h" +#include "constants/vars.h" + .include "include/macros.inc" + .include "constants/constants.inc" + .include "include/macros/event.inc" + + .section .rodata + +gUnknown_Debug_845DAE1:: + me_checkcompat gUnknown_Debug_845DAE1, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845DAFF, _0845DAFFEnd +_0845DAFF: + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _845DB56, _845DB56End + me_setrecordmixinggift 0x1, 0x5, ITEM_EON_TICKET + me_runscript _0845DD0D + me_end + +_0845DB16: + .string "Lauf und besuche deinen Vater in der\n" + .string "ARENA von BLÜTENBURG CITY.$" + +_845DB56: + setvaddress _845DB56 + checkitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DBB4 + checkpcitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DBB4 + checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS + vgoto_if 0x1, _0845DBB4 + lock + faceplayer + vmessage _0845DBBE + waitmessage + waitbuttonpress + checkitemspace ITEM_EON_TICKET, 0x1 + compare RESULT, 0x0 + vgoto_if 0x1, _0845DBB5 + setorcopyvar VAR_SPECIAL_0, ITEM_EON_TICKET + setorcopyvar VAR_SPECIAL_1, 0x1 + callstd 0x0 + setflag FLAG_SYS_HAS_EON_TICKET + vmessage _0845DC00 + waitmessage + waitbuttonpress + release +_0845DBB4: + killscript +_0845DBB5: + vmessage _0845DC94 + waitmessage + waitbuttonpress + release + end + +_0845DBBE: + .string "VATER: {PLAYER}! Schön, dich zu sehen!\n" + .string "Hier ist ein Brief für dich, {PLAYER}.$" + +_0845DC00: + .string "VATER: Ich bin mir nicht sicher, es\n" + .string "könnte ein TICKET für eine Fähre sein.\p" + .string "Du solltest nach SEEGRASULB CITY gehen\n" + .string "und dich dort genauer erkundigen.$" + +_0845DC94: + .string "VATER: {PLAYER}, die BASIS-TASCHE\n" + .string "deines BEUTELS ist voll.\p" + .string "Lagere einige deiner Basis-Items in\n" + .string "deinem PC und komm dann wieder.$" +_845DB56End: + .size _845DB56, _845DB56End - _845DB56 + +_0845DD0D: + setvaddress _0845DD0D + checkitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DD53 + checkpcitem ITEM_EON_TICKET, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845DD53 + checkflag FLAG_ENCOUNTERED_LATIAS_OR_LATIOS + vgoto_if 0x1, _0845DD53 + checkitemspace ITEM_EON_TICKET, 0x1 + compare RESULT, 0x0 + vgoto_if 0x1, _0845DD5B + vloadptr _0845DB16 + setmysteryeventstatus 0x2 + end + +_0845DD53: + vloadptr _0845DD63 + setmysteryeventstatus 0x3 + end + +_0845DD5B: + vloadptr _0845DD95 + setmysteryeventstatus 0x3 + end + +_0845DD63: + .string "Dieses GESCHEHEN kann nur einmal\n" + .string "gespielt werden.$" + +_0845DD95: + .string "Deine BASIS-TASCHE ist voll.$" +_0845DAFFEnd: + .size _0845DAFF, _0845DAFFEnd - _0845DAFF +gUnknown_Debug_845DAE1End:: + +gUnknown_Debug_845DDB2:: + me_checkcompat gUnknown_Debug_845DDB2, 4, 4, 4, 0x80 + me_checksum 0x0, _0845DDD0, _0845DDD0End +_0845DDD0: + me_setenigmaberry gUnknown_Debug_845DDD6 + me_end + +gUnknown_Debug_845DDD6:: + .space 0x530 +_0845DDD0End: + .size _0845DDD0, _0845DDD0End - _0845DDD0 +gUnknown_Debug_845DDB2End:: + +gUnknown_Debug_845E306:: + me_checkcompat gUnknown_Debug_845E306, 0x4, 0x4, 0x4, 0x80 + me_runscript _0845E329 + me_setmsg 0x2, _0845E34F + me_setmsg 0x3, _0845E387 + me_end + +_0845E329: + setvaddress _0845E329 + getpartysize + compare RESULT, 0x6 + vgoto_if 0x1, _0845E34C + givemon SPECIES_LUVDISC, 15, ITEM_BERRY_JUICE, 0x0, 0x0, 0x0 + setmysteryeventstatus 0x2 + end + +_0845E34C: + setmysteryeventstatus 0x3 + end + +_0845E34F: + .string "Ein POKéMON wurde in das Team des\n" + .string "Spielers aufgenommen.$" + +_0845E387: + .string "Das Team des Spielers ist vollständig.\n" + .string "Es kann kein weiteres POKéMON\l" + .string "aufgenommen werden.$" + +gUnknown_Debug_845E3E0:: + me_checkcompat gUnknown_Debug_845E3E0, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E3FE, _0845E3FEEnd +_0845E3FE: + me_giveribbon 0x0, 0x1 + me_end +_0845E3FEEnd: + .size _0845E3FE, _0845E3FEEnd - _0845E3FE +gUnknown_Debug_845E3E0End:: + +gUnknown_Debug_845E402:: + me_checkcompat gUnknown_Debug_845E402, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E420, _0845E420End +_0845E420: + me_givenationaldex + me_end +_0845E420End: + .size _0845E420, _0845E420End - _0845E420 +gUnknown_Debug_845E402End:: + +gUnknown_Debug_845E422:: + me_checkcompat gUnknown_Debug_845E422, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E440, _0845E440End +_0845E440: + me_addrareword 0x1 + me_end +_0845E440End: + .size _0845E440, _0845E440End - _0845E440 +gUnknown_Debug_845E422End:: + +gUnknown_Debug_845E443:: + me_checkcompat gUnknown_Debug_845E443, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E461, _0845E461End +_0845E461: + me_givepokemon gUnknown_Debug_845E467 + me_end + +gUnknown_Debug_845E467:: + .space 100 + +gUnknown_Debug_845E4CB:: + .space 36 +_0845E461End: + .size _0845E461, _0845E461End - _0845E461 +gUnknown_Debug_845E443End:: + +gUnknown_Debug_845E4EF:: + me_checkcompat gUnknown_Debug_845E4EF, 0x4, 0x4, 0x4, 0x80 + me_addtrainer gUnknown_Debug_845E506 + me_end + +gUnknown_Debug_845E506:: + .space 256 +gUnknown_Debug_845E4EFEnd:: + +gUnknown_Debug_845E606:: + me_checkcompat gUnknown_Debug_845E606, 0x4, 0x4, 0x4, 0x80 + me_enableresetrtc + me_end +gUnknown_Debug_845E606End:: + +gUnknown_Debug_845E619:: + me_checkcompat gUnknown_Debug_845E619, 0x4, 0x4, 0x4, 0x80 + me_checksum 0x0, _0845E637, _0845E637End +_0845E637: + me_initramscript MAP_PETALBURG_CITY_GYM, 0x1, _0845E683, _0845E683End + me_setmsg 0xff, _0845E64C + me_setstatus 0x2 + me_end + +_0845E64C: + .string "Besuche deinen Vater in der ARENA\n" + .string "von BLÜTENBURG CITY.$" + +_0845E683: + setvaddress _0845E683 + checkitem ITEM_GANLON_BERRY, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845E6BF + checkpcitem ITEM_GANLON_BERRY, 0x1 + compare RESULT, 0x1 + vgoto_if 0x1, _0845E6BF + lock + faceplayer + vmessage _0845E6C0 + waitmessage + waitbuttonpress + setorcopyvar VAR_SPECIAL_0, ITEM_GANLON_BERRY + setorcopyvar VAR_SPECIAL_1, 0x1 + callstd 0x0 + release + killscript +_0845E6BF: + gotoram + +_0845E6C0: + .string "VATER: Hi, {PLAYER}!\p" + .string "Ich habe gerade diese seltene BEERE\n" + .string "erhalten. Ich schenke sie dir!$" +_0845E637End: + .size _0845E637, _0845E637End - _0845E637 +_0845E683End: + .size _0845E683, _0845E683End - _0845E683 +gUnknown_Debug_845E619End:: + +gUnknown_Debug_845E712:: + me_checkcompat gUnknown_Debug_845E712, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, _0845E730, _0845E730End +_0845E730: + me_runscript _0845E736 + me_end + +_0845E736: + setvaddress _0845E736 + bufferdecorationname 0x0, DECOR_REGISTEEL_DOLL + givedecoration DECOR_REGISTEEL_DOLL + compare RESULT, 0x0 + vgoto_if 0x1, _0845E755 + vloadptr _0845E75D + setmysteryeventstatus 0x2 + end + +_0845E755: + vloadptr _0845E771 + setmysteryeventstatus 0x3 + end + +_0845E75D: + .string "{STR_VAR_1} wurde übergeben.$" +_0845E771: + .string "Es ist kein Platz für {STR_VAR_1}\n" + .string "vorhanden...$" +_0845E730End: + .size _0845E730, _0845E730End - _0845E730 +gUnknown_Debug_845E712End:: + +gUnknown_Debug_845E797:: + me_checkcompat gUnknown_Debug_845E797, 0x4, 0x4, 0x4, 0x80 + me_crc 0x0, gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End +gUnknown_Debug_845E7B5:: + me_setrecordmixinggift 0x1, 0x3, ITEM_POTION + me_end +gUnknown_Debug_845E7B5End: + .size gUnknown_Debug_845E7B5, gUnknown_Debug_845E7B5End - gUnknown_Debug_845E7B5 +gUnknown_Debug_845E797End:: + +.endif diff --git a/include/macros.inc b/include/macros.inc index 93a029cdd..8d58f06de 100644 --- a/include/macros.inc +++ b/include/macros.inc @@ -4,7 +4,7 @@ .include "include/macros/pokemon_data.inc" .include "include/macros/ec.inc" .include "include/macros/map.inc" - .include "include/macros/me_script.inc" + .include "include/macros/mystery_event_script.inc" .macro region_map_location x, y, width, height, name .byte \x diff --git a/include/macros/me_script.inc b/include/macros/me_script.inc deleted file mode 100644 index 4d5f59d1b..000000000 --- a/include/macros/me_script.inc +++ /dev/null @@ -1,88 +0,0 @@ - .macro me_nop - .byte 0 - .endm - - .macro me_checkcompat word, v1, v2, v3, v4 - .byte 1 - .4byte \word - .2byte \v1 - .4byte \v2 - .2byte \v3 - .4byte \v4 - .endm - - .macro me_end - .byte 2 - .endm - - .macro me_setmsg value, str - .byte 3 - .byte \value - .4byte \str - .endm - - .macro me_setstatus value - .byte 4 - .byte \value - .endm - - .macro me_runscript script - .byte 5 - .4byte \script - .endm - - .macro me_initramscript mapId, objId, script, end - .byte 6 - map \mapId - .byte \objId - .4byte \script, \end - .endm - - .macro me_setenigmaberry berry - .byte 7 - .4byte \berry - .endm - - .macro me_giveribbon index, ribbonId - .byte 8 - .byte \index, \ribbonId - .endm - - .macro me_givenationaldex - .byte 9 - .endm - - .macro me_addrareword word - .byte 10 - .byte \word - .endm - - .macro me_setrecordmixinggift unk, quantity, itemId - .byte 11 - .byte \unk, \quantity - .2byte \itemId - .endm - - .macro me_givepokemon data - .byte 12 - .4byte \data - .endm - - .macro me_addtrainer data - .byte 13 - .4byte \data - .endm - - .macro me_enableresetrtc - .byte 14 - .endm - - .macro me_checksum checksum, data, dataEnd - .byte 15 - .4byte \checksum, \data, \dataEnd - .endm - - .macro me_crc crc, data, dataEnd - .byte 16 - .4byte \crc, \data, \dataEnd - .endm diff --git a/include/macros/mystery_event_script.inc b/include/macros/mystery_event_script.inc new file mode 100644 index 000000000..4d5f59d1b --- /dev/null +++ b/include/macros/mystery_event_script.inc @@ -0,0 +1,88 @@ + .macro me_nop + .byte 0 + .endm + + .macro me_checkcompat word, v1, v2, v3, v4 + .byte 1 + .4byte \word + .2byte \v1 + .4byte \v2 + .2byte \v3 + .4byte \v4 + .endm + + .macro me_end + .byte 2 + .endm + + .macro me_setmsg value, str + .byte 3 + .byte \value + .4byte \str + .endm + + .macro me_setstatus value + .byte 4 + .byte \value + .endm + + .macro me_runscript script + .byte 5 + .4byte \script + .endm + + .macro me_initramscript mapId, objId, script, end + .byte 6 + map \mapId + .byte \objId + .4byte \script, \end + .endm + + .macro me_setenigmaberry berry + .byte 7 + .4byte \berry + .endm + + .macro me_giveribbon index, ribbonId + .byte 8 + .byte \index, \ribbonId + .endm + + .macro me_givenationaldex + .byte 9 + .endm + + .macro me_addrareword word + .byte 10 + .byte \word + .endm + + .macro me_setrecordmixinggift unk, quantity, itemId + .byte 11 + .byte \unk, \quantity + .2byte \itemId + .endm + + .macro me_givepokemon data + .byte 12 + .4byte \data + .endm + + .macro me_addtrainer data + .byte 13 + .4byte \data + .endm + + .macro me_enableresetrtc + .byte 14 + .endm + + .macro me_checksum checksum, data, dataEnd + .byte 15 + .4byte \checksum, \data, \dataEnd + .endm + + .macro me_crc crc, data, dataEnd + .byte 16 + .4byte \crc, \data, \dataEnd + .endm diff --git a/ld_script.txt b/ld_script.txt index ac2711841..527805658 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -677,7 +677,7 @@ SECTIONS { data/strings2.o(.rodata); src/menu_cursor.o(.rodata); src/mystery_event_msg.o(.rodata); - data/debug_menu_3.o(.rodata); + data/debug_mystery_event_scripts.o(.rodata); src/libs/m4a_tables.o(.rodata); data/sound_data.o(.rodata); } =0 -- cgit v1.2.3 From 91f869d1e6ed1ef12ad4b2255d3762e3b1b51429 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 9 Apr 2018 14:01:40 -0400 Subject: Rename unk_debug_menu_3 to ereader_debug_menu --- ld_script.txt | 4 +- src/debug/ereader_debug_menu.c | 362 +++++++++++++++++++++++++++++++++++++++++ src/debug/unk_debug_menu_3.c | 362 ----------------------------------------- 3 files changed, 364 insertions(+), 364 deletions(-) create mode 100644 src/debug/ereader_debug_menu.c delete mode 100644 src/debug/unk_debug_menu_3.c diff --git a/ld_script.txt b/ld_script.txt index 527805658..0bacb1d50 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -363,7 +363,7 @@ SECTIONS { src/unused_8124F94.o(.text); src/save.o(.text); src/mystery_event_script.o(.text); - src/debug/unk_debug_menu_3.o(.text); + src/debug/ereader_debug_menu.o(.text); src/field_effect_helpers.o(.text); src/contest_ai.o(.text); src/unused_81258BC.o(.text); @@ -646,7 +646,7 @@ SECTIONS { src/choose_party.o(.rodata); src/cable_car.o(.rodata); src/save.o(.rodata); - src/debug/unk_debug_menu_3.o(.rodata); + src/debug/ereader_debug_menu.o(.rodata); src/field_effect_helpers.o(.rodata); src/contest_ai.o(.rodata); src/battle/battle_controller_safari.o(.rodata); diff --git a/src/debug/ereader_debug_menu.c b/src/debug/ereader_debug_menu.c new file mode 100644 index 000000000..aaffca383 --- /dev/null +++ b/src/debug/ereader_debug_menu.c @@ -0,0 +1,362 @@ +#include "global.h" +#include "debug.h" +#include "constants/species.h" +#include "constants/items.h" +#include "string_util.h" +#include "new_game.h" +#include "load_save.h" +#include "start_menu.h" +#include "mystery_event_script.h" +#include "berry.h" +#include "mail_data.h" + +const u8 Str_842E238[] = _("タマゴ"); + +#if DEBUG + +extern u8 gUnknown_Debug_845DAE1[]; +extern u8 gUnknown_Debug_845DAE1End[]; + +size_t debug_sub_813C404(u8 * dest) +{ + size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; + memcpy(dest, gUnknown_Debug_845DAE1, size); + debug_sub_812620C(dest, gUnknown_Debug_845DAE1); + return size; +} + +extern u8 gUnknown_Debug_845E3E0[]; +extern u8 gUnknown_Debug_845E3E0End[]; + +size_t debug_sub_813C430(u8 * dest) +{ + size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; + memcpy(dest, gUnknown_Debug_845E3E0, size); + debug_sub_812620C(dest, gUnknown_Debug_845E3E0); + return size; +} + +extern u8 gUnknown_Debug_845E422[]; +extern u8 gUnknown_Debug_845E422End[]; + +size_t debug_sub_813C45C(u8 * dest) +{ + size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; + memcpy(dest, gUnknown_Debug_845E422, size); + debug_sub_812620C(dest, gUnknown_Debug_845E422); + return size; +} + +extern u8 gUnknown_Debug_845E402[]; +extern u8 gUnknown_Debug_845E402End[]; + +size_t debug_sub_813C488(u8 * dest) +{ + size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; + memcpy(dest, gUnknown_Debug_845E402, size); + debug_sub_812620C(dest, gUnknown_Debug_845E402); + return size; +} + +extern u8 gUnknown_Debug_845E606[]; +extern u8 gUnknown_Debug_845E606End[]; + +size_t debug_sub_813C4B4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606; + memcpy(dest, gUnknown_Debug_845E606, size); + return size; +} + +extern u8 gUnknown_Debug_845E619[]; +extern u8 gUnknown_Debug_845E619End[]; + +size_t debug_sub_813C4D4(u8 * dest) +{ + size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; + memcpy(dest, gUnknown_Debug_845E619, size); + debug_sub_81261B4(dest, gUnknown_Debug_845E619); + return size; +} + +extern u8 gUnknown_Debug_845E712[]; +extern u8 gUnknown_Debug_845E712End[]; + +size_t debug_sub_813C500(u8 * dest) +{ + size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; + memcpy(dest, gUnknown_Debug_845E712, size); + debug_sub_812620C(dest, gUnknown_Debug_845E712); + return size; +} + +extern u8 gUnknown_Debug_845E797[]; +extern u8 gUnknown_Debug_845E797End[]; +extern u8 gUnknown_Debug_845E7B5[]; + +size_t debug_sub_813C52C(u8 * dest, u16 itemId) +{ + u8 * ptr; + size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797; + memcpy(dest, gUnknown_Debug_845E797, size); + ptr = gUnknown_Debug_845E7B5 - gUnknown_Debug_845E797 + dest; + ptr += 3; + ptr[0] = itemId; + ptr[1] = itemId >> 8; + debug_sub_812620C(dest, gUnknown_Debug_845E797); + return size; +} + +size_t debug_sub_813C580(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POTION); +} + +size_t debug_sub_813C58C(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_POKE_BALL); +} + +size_t debug_sub_813C598(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_CHERI_BERRY); +} + +size_t debug_sub_813C5A4(u8 * dest) +{ + return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); +} + +extern u8 gUnknown_Debug_845DDB2[]; +extern u8 gUnknown_Debug_845DDB2End[]; +extern u8 gUnknown_Debug_845DDD6[]; + +const u8 Str_842E23C[] = _("ガイブ"); + +size_t debug_sub_813C5B4(u8 * dest) +{ + u8 * saveBerry = (u8 *)&gSaveBlock1.enigmaBerry; + u8 * berry = (u8 *)(dest - gUnknown_Debug_845DDB2 + gUnknown_Debug_845DDD6); + size_t size = gUnknown_Debug_845DDB2End - gUnknown_Debug_845DDB2; + int i; + + debug_sub_80C2C18(Str_842E23C, 0, 0); + + for (i = 0; i < 0x1000; i++) + dest[i] = 0; + + for (i = 0; i < size; i++) + dest[i] = gUnknown_Debug_845DDB2[i]; + + for (i = 0; i < sizeof(struct EnigmaBerry); i++) + berry[i] = saveBerry[i]; + + ClearEnigmaBerries(); + debug_sub_81261B4(dest, gUnknown_Debug_845DDB2); + return size; +} + +const u8 Str_842E240[] = _("ENGLISH"); +const u8 Str_842E248[] = _("TOURNAMENT"); + +void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId) +{ + u32 _itemId; + ZeroMonData(mon); + CreateMon(mon, species, level, 32, FALSE, 0, TRUE, 9999); + SetMonData(mon, MON_DATA_OT_NAME, Str_842E240); + SetMonData(mon, MON_DATA_NICKNAME, Str_842E248); + _itemId = itemId; + SetMonData(mon, MON_DATA_HELD_ITEM, &_itemId); +} + +void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail) +{ + u16 itemId; + ClearMailStruct(mail); + itemId = GetMonData(mon, MON_DATA_HELD_ITEM); + if (ItemIsMail(itemId)) + { + u8 * name = mail->playerName; + u8 * id = mail->trainerId; + u8 nameBuf[8]; + int i; + + for (i = 0; i < 9; i++) + mail->words[i] = i + 1; + + GetMonData(mon, MON_DATA_OT_NAME, nameBuf); + StringCopyN(name, nameBuf, OT_NAME_LENGTH + 1); + + write_word_to_mem(GetMonData(mon, MON_DATA_OT_ID), id); + + mail->species = SpeciesToMailSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_PERSONALITY)); + mail->itemId = itemId; + + } +} + +extern u8 gUnknown_Debug_845E443[]; +extern u8 gUnknown_Debug_845E443End[]; +extern u8 gUnknown_Debug_845E467[]; +extern u8 gUnknown_Debug_845E4CB[]; + +size_t debug_sub_813C740(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + u8 dataBuffer[11]; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); + dataBuffer[0] = TRUE; + SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); + dataBuffer[0] = 3; + SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer); + dataBuffer[0] = 255; + SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); + + StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1); + SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); + + dataBuffer[0] = LANGUAGE_JAPANESE; + SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + return size; +} + +size_t debug_sub_813C810(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +size_t debug_sub_813C888(u8 * dest) +{ + struct MailStruct mail; + u8 * src = gUnknown_Debug_845E443; + u8 * end = gUnknown_Debug_845E443End; + struct Pokemon *mon = gEnemyParty; + size_t size = end - src; + + memcpy(dest, src, size); + debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); + debug_sub_813C6AC(mon, &mail); + mon->box.checksum = 0; + + memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); + + memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); + + debug_sub_812620C(dest, src); + + return size; +} + +void debug_sub_813C904(void) +{ + debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW); + debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND); + debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY); +} + +extern u8 gUnknown_Debug_845E4EF[]; +extern u8 gUnknown_Debug_845E4EFEnd[]; +extern u8 gUnknown_Debug_845E506[]; + +const u8 Str_842E253[] = _(" そら  カードイー"); + +size_t debug_sub_813C93C(u8 * dest) +{ + u8 * src = gUnknown_Debug_845E4EF; + size_t size = gUnknown_Debug_845E4EFEnd - src; + struct BattleTowerEReaderTrainer ereaderTrainer; + + memcpy(dest, src, size); + SavePlayerParty(); + debug_sub_813C904(); + debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999); + LoadPlayerParty(); + + memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer)); + + return size; +} + +const u8 Str_842E25E[] = _("ポケコッコ"); +const u8 Str_842E264[] = _("ticket"); +const u8 Str_842E26B[] = _("{PKMN}"); +const u8 Str_842E26E[] = _("wrong {PKMN}"); +const u8 Str_842E277[] = _("ribbon"); +const u8 Str_842E27E[] = _("DEX"); +const u8 Str_842E282[] = _("message"); +const u8 Str_842E28A[] = _("egg"); +const u8 Str_842E28E[] = _("RAM seed"); +const u8 Str_842E297[] = _("trainer"); +const u8 Str_842E29F[] = _("clock"); +const u8 Str_842E2A5[] = _("item"); +const u8 Str_842E2AA[] = _("goods"); +const u8 Str_842E2B0[] = _("potion"); +const u8 Str_842E2B7[] = _("ball"); +const u8 Str_842E2BC[] = _("cheri berry"); +const u8 Str_842E2C8[] = _("TM01"); + +const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { + {Str_842E264, debug_sub_813C404}, + {Str_842E26B, debug_sub_813C810}, + {Str_842E26E, debug_sub_813C888}, + {Str_842E277, debug_sub_813C430}, + {Str_842E27E, debug_sub_813C488}, + {Str_842E282, debug_sub_813C45C}, + {Str_842E28A, debug_sub_813C740}, + {Str_842E28E, debug_sub_813C5B4}, + {Str_842E297, debug_sub_813C93C}, + {Str_842E29F, debug_sub_813C4B4}, + {Str_842E2A5, debug_sub_813C4D4}, + {Str_842E2AA, debug_sub_813C500}, + {Str_842E2B0, debug_sub_813C580}, + {Str_842E2B7, debug_sub_813C58C}, + {Str_842E2BC, debug_sub_813C598}, + {Str_842E2C8, debug_sub_813C5A4} +}; + +extern u8 gUnknown_Debug_845E306[]; + +const u8 gUnknown_Debug_842E350 = 16; + +u8 *const gUnknown_Debug_842E354[] = { + gUnknown_Debug_845DAE1, + gUnknown_Debug_845DDB2, + gUnknown_Debug_845E306, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E3E0, + gUnknown_Debug_845E402, + gUnknown_Debug_845E402, + gUnknown_Debug_845E422, + gUnknown_Debug_845E422, + gUnknown_Debug_845E443 +}; + +#endif // DEBUG diff --git a/src/debug/unk_debug_menu_3.c b/src/debug/unk_debug_menu_3.c deleted file mode 100644 index aaffca383..000000000 --- a/src/debug/unk_debug_menu_3.c +++ /dev/null @@ -1,362 +0,0 @@ -#include "global.h" -#include "debug.h" -#include "constants/species.h" -#include "constants/items.h" -#include "string_util.h" -#include "new_game.h" -#include "load_save.h" -#include "start_menu.h" -#include "mystery_event_script.h" -#include "berry.h" -#include "mail_data.h" - -const u8 Str_842E238[] = _("タマゴ"); - -#if DEBUG - -extern u8 gUnknown_Debug_845DAE1[]; -extern u8 gUnknown_Debug_845DAE1End[]; - -size_t debug_sub_813C404(u8 * dest) -{ - size_t size = gUnknown_Debug_845DAE1End - gUnknown_Debug_845DAE1; - memcpy(dest, gUnknown_Debug_845DAE1, size); - debug_sub_812620C(dest, gUnknown_Debug_845DAE1); - return size; -} - -extern u8 gUnknown_Debug_845E3E0[]; -extern u8 gUnknown_Debug_845E3E0End[]; - -size_t debug_sub_813C430(u8 * dest) -{ - size_t size = gUnknown_Debug_845E3E0End - gUnknown_Debug_845E3E0; - memcpy(dest, gUnknown_Debug_845E3E0, size); - debug_sub_812620C(dest, gUnknown_Debug_845E3E0); - return size; -} - -extern u8 gUnknown_Debug_845E422[]; -extern u8 gUnknown_Debug_845E422End[]; - -size_t debug_sub_813C45C(u8 * dest) -{ - size_t size = gUnknown_Debug_845E422End - gUnknown_Debug_845E422; - memcpy(dest, gUnknown_Debug_845E422, size); - debug_sub_812620C(dest, gUnknown_Debug_845E422); - return size; -} - -extern u8 gUnknown_Debug_845E402[]; -extern u8 gUnknown_Debug_845E402End[]; - -size_t debug_sub_813C488(u8 * dest) -{ - size_t size = gUnknown_Debug_845E402End - gUnknown_Debug_845E402; - memcpy(dest, gUnknown_Debug_845E402, size); - debug_sub_812620C(dest, gUnknown_Debug_845E402); - return size; -} - -extern u8 gUnknown_Debug_845E606[]; -extern u8 gUnknown_Debug_845E606End[]; - -size_t debug_sub_813C4B4(u8 * dest) -{ - size_t size = gUnknown_Debug_845E606End - gUnknown_Debug_845E606; - memcpy(dest, gUnknown_Debug_845E606, size); - return size; -} - -extern u8 gUnknown_Debug_845E619[]; -extern u8 gUnknown_Debug_845E619End[]; - -size_t debug_sub_813C4D4(u8 * dest) -{ - size_t size = gUnknown_Debug_845E619End - gUnknown_Debug_845E619; - memcpy(dest, gUnknown_Debug_845E619, size); - debug_sub_81261B4(dest, gUnknown_Debug_845E619); - return size; -} - -extern u8 gUnknown_Debug_845E712[]; -extern u8 gUnknown_Debug_845E712End[]; - -size_t debug_sub_813C500(u8 * dest) -{ - size_t size = gUnknown_Debug_845E712End - gUnknown_Debug_845E712; - memcpy(dest, gUnknown_Debug_845E712, size); - debug_sub_812620C(dest, gUnknown_Debug_845E712); - return size; -} - -extern u8 gUnknown_Debug_845E797[]; -extern u8 gUnknown_Debug_845E797End[]; -extern u8 gUnknown_Debug_845E7B5[]; - -size_t debug_sub_813C52C(u8 * dest, u16 itemId) -{ - u8 * ptr; - size_t size = gUnknown_Debug_845E797End - gUnknown_Debug_845E797; - memcpy(dest, gUnknown_Debug_845E797, size); - ptr = gUnknown_Debug_845E7B5 - gUnknown_Debug_845E797 + dest; - ptr += 3; - ptr[0] = itemId; - ptr[1] = itemId >> 8; - debug_sub_812620C(dest, gUnknown_Debug_845E797); - return size; -} - -size_t debug_sub_813C580(u8 * dest) -{ - return debug_sub_813C52C(dest, ITEM_POTION); -} - -size_t debug_sub_813C58C(u8 * dest) -{ - return debug_sub_813C52C(dest, ITEM_POKE_BALL); -} - -size_t debug_sub_813C598(u8 * dest) -{ - return debug_sub_813C52C(dest, ITEM_CHERI_BERRY); -} - -size_t debug_sub_813C5A4(u8 * dest) -{ - return debug_sub_813C52C(dest, ITEM_TM01_FOCUS_PUNCH); -} - -extern u8 gUnknown_Debug_845DDB2[]; -extern u8 gUnknown_Debug_845DDB2End[]; -extern u8 gUnknown_Debug_845DDD6[]; - -const u8 Str_842E23C[] = _("ガイブ"); - -size_t debug_sub_813C5B4(u8 * dest) -{ - u8 * saveBerry = (u8 *)&gSaveBlock1.enigmaBerry; - u8 * berry = (u8 *)(dest - gUnknown_Debug_845DDB2 + gUnknown_Debug_845DDD6); - size_t size = gUnknown_Debug_845DDB2End - gUnknown_Debug_845DDB2; - int i; - - debug_sub_80C2C18(Str_842E23C, 0, 0); - - for (i = 0; i < 0x1000; i++) - dest[i] = 0; - - for (i = 0; i < size; i++) - dest[i] = gUnknown_Debug_845DDB2[i]; - - for (i = 0; i < sizeof(struct EnigmaBerry); i++) - berry[i] = saveBerry[i]; - - ClearEnigmaBerries(); - debug_sub_81261B4(dest, gUnknown_Debug_845DDB2); - return size; -} - -const u8 Str_842E240[] = _("ENGLISH"); -const u8 Str_842E248[] = _("TOURNAMENT"); - -void debug_sub_813C638(struct Pokemon * mon, u16 species, u8 level, u16 itemId) -{ - u32 _itemId; - ZeroMonData(mon); - CreateMon(mon, species, level, 32, FALSE, 0, TRUE, 9999); - SetMonData(mon, MON_DATA_OT_NAME, Str_842E240); - SetMonData(mon, MON_DATA_NICKNAME, Str_842E248); - _itemId = itemId; - SetMonData(mon, MON_DATA_HELD_ITEM, &_itemId); -} - -void debug_sub_813C6AC(struct Pokemon *mon, struct MailStruct *mail) -{ - u16 itemId; - ClearMailStruct(mail); - itemId = GetMonData(mon, MON_DATA_HELD_ITEM); - if (ItemIsMail(itemId)) - { - u8 * name = mail->playerName; - u8 * id = mail->trainerId; - u8 nameBuf[8]; - int i; - - for (i = 0; i < 9; i++) - mail->words[i] = i + 1; - - GetMonData(mon, MON_DATA_OT_NAME, nameBuf); - StringCopyN(name, nameBuf, OT_NAME_LENGTH + 1); - - write_word_to_mem(GetMonData(mon, MON_DATA_OT_ID), id); - - mail->species = SpeciesToMailSpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_PERSONALITY)); - mail->itemId = itemId; - - } -} - -extern u8 gUnknown_Debug_845E443[]; -extern u8 gUnknown_Debug_845E443End[]; -extern u8 gUnknown_Debug_845E467[]; -extern u8 gUnknown_Debug_845E4CB[]; - -size_t debug_sub_813C740(u8 * dest) -{ - struct MailStruct mail; - u8 * src = gUnknown_Debug_845E443; - u8 * end = gUnknown_Debug_845E443End; - struct Pokemon *mon = gEnemyParty; - size_t size = end - src; - u8 dataBuffer[11]; - - memcpy(dest, src, size); - debug_sub_813C638(mon, SPECIES_PIKACHU, 5, ITEM_NONE); - dataBuffer[0] = TRUE; - SetMonData(mon, MON_DATA_IS_EGG, dataBuffer); - dataBuffer[0] = 3; - SetMonData(mon, MON_DATA_FRIENDSHIP, dataBuffer); - dataBuffer[0] = 255; - SetMonData(mon, MON_DATA_MET_LOCATION, dataBuffer); - - StringCopyN(dataBuffer, Str_842E238, POKEMON_NAME_LENGTH + 1); - SetMonData(mon, MON_DATA_NICKNAME, dataBuffer); - - dataBuffer[0] = LANGUAGE_JAPANESE; - SetMonData(mon, MON_DATA_LANGUAGE, dataBuffer); - - memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); - - memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); - - return size; -} - -size_t debug_sub_813C810(u8 * dest) -{ - struct MailStruct mail; - u8 * src = gUnknown_Debug_845E443; - u8 * end = gUnknown_Debug_845E443End; - struct Pokemon *mon = gEnemyParty; - size_t size = end - src; - - memcpy(dest, src, size); - debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); - debug_sub_813C6AC(mon, &mail); - - memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); - - memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); - - debug_sub_812620C(dest, src); - - return size; -} - -size_t debug_sub_813C888(u8 * dest) -{ - struct MailStruct mail; - u8 * src = gUnknown_Debug_845E443; - u8 * end = gUnknown_Debug_845E443End; - struct Pokemon *mon = gEnemyParty; - size_t size = end - src; - - memcpy(dest, src, size); - debug_sub_813C638(mon, SPECIES_UNOWN, 21, ITEM_DREAM_MAIL); - debug_sub_813C6AC(mon, &mail); - mon->box.checksum = 0; - - memcpy(gUnknown_Debug_845E467 - src + dest, mon, sizeof(struct Pokemon)); - - memcpy(gUnknown_Debug_845E4CB - src + dest, &mail, sizeof(struct MailStruct)); - - debug_sub_812620C(dest, src); - - return size; -} - -void debug_sub_813C904(void) -{ - debug_sub_813C638(gPlayerParty + 0, SPECIES_CHARMELEON, 50, ITEM_QUICK_CLAW); - debug_sub_813C638(gPlayerParty + 1, SPECIES_WARTORTLE, 50, ITEM_FOCUS_BAND); - debug_sub_813C638(gPlayerParty + 2, SPECIES_IVYSAUR, 50, ITEM_LUM_BERRY); -} - -extern u8 gUnknown_Debug_845E4EF[]; -extern u8 gUnknown_Debug_845E4EFEnd[]; -extern u8 gUnknown_Debug_845E506[]; - -const u8 Str_842E253[] = _(" そら  カードイー"); - -size_t debug_sub_813C93C(u8 * dest) -{ - u8 * src = gUnknown_Debug_845E4EF; - size_t size = gUnknown_Debug_845E4EFEnd - src; - struct BattleTowerEReaderTrainer ereaderTrainer; - - memcpy(dest, src, size); - SavePlayerParty(); - debug_sub_813C904(); - debug_sub_8075DB4(&ereaderTrainer, Str_842E253 + 5, 9999); - LoadPlayerParty(); - - memcpy(gUnknown_Debug_845E506 - src + dest, &ereaderTrainer, sizeof(ereaderTrainer)); - - return size; -} - -const u8 Str_842E25E[] = _("ポケコッコ"); -const u8 Str_842E264[] = _("ticket"); -const u8 Str_842E26B[] = _("{PKMN}"); -const u8 Str_842E26E[] = _("wrong {PKMN}"); -const u8 Str_842E277[] = _("ribbon"); -const u8 Str_842E27E[] = _("DEX"); -const u8 Str_842E282[] = _("message"); -const u8 Str_842E28A[] = _("egg"); -const u8 Str_842E28E[] = _("RAM seed"); -const u8 Str_842E297[] = _("trainer"); -const u8 Str_842E29F[] = _("clock"); -const u8 Str_842E2A5[] = _("item"); -const u8 Str_842E2AA[] = _("goods"); -const u8 Str_842E2B0[] = _("potion"); -const u8 Str_842E2B7[] = _("ball"); -const u8 Str_842E2BC[] = _("cheri berry"); -const u8 Str_842E2C8[] = _("TM01"); - -const struct UnkDebugMenu3Items gUnknown_Debug_842E2D0[] = { - {Str_842E264, debug_sub_813C404}, - {Str_842E26B, debug_sub_813C810}, - {Str_842E26E, debug_sub_813C888}, - {Str_842E277, debug_sub_813C430}, - {Str_842E27E, debug_sub_813C488}, - {Str_842E282, debug_sub_813C45C}, - {Str_842E28A, debug_sub_813C740}, - {Str_842E28E, debug_sub_813C5B4}, - {Str_842E297, debug_sub_813C93C}, - {Str_842E29F, debug_sub_813C4B4}, - {Str_842E2A5, debug_sub_813C4D4}, - {Str_842E2AA, debug_sub_813C500}, - {Str_842E2B0, debug_sub_813C580}, - {Str_842E2B7, debug_sub_813C58C}, - {Str_842E2BC, debug_sub_813C598}, - {Str_842E2C8, debug_sub_813C5A4} -}; - -extern u8 gUnknown_Debug_845E306[]; - -const u8 gUnknown_Debug_842E350 = 16; - -u8 *const gUnknown_Debug_842E354[] = { - gUnknown_Debug_845DAE1, - gUnknown_Debug_845DDB2, - gUnknown_Debug_845E306, - gUnknown_Debug_845E3E0, - gUnknown_Debug_845E3E0, - gUnknown_Debug_845E402, - gUnknown_Debug_845E402, - gUnknown_Debug_845E422, - gUnknown_Debug_845E422, - gUnknown_Debug_845E443 -}; - -#endif // DEBUG -- cgit v1.2.3