Merge branch 'master' into battle_engine_v2

This commit is contained in:
DizzyEggg 2019-04-02 08:37:54 +02:00
commit cd3de7821e
79 changed files with 6393 additions and 6408 deletions

View File

@ -6401,7 +6401,7 @@ sub_8027BEC: @ 8027BEC
adds r0, r7, 0
adds r1, r4, 0
movs r2, 0xD
bl sub_8098858
bl DrawTextBorderOuter
adds r0, r7, 0
movs r1, 0x11
bl FillWindowPixelBuffer

View File

@ -39,8 +39,8 @@ mevent_srv_new_wcard: @ 801D0A0
.pool
thumb_func_end mevent_srv_new_wcard
thumb_func_start sub_801D0C4
sub_801D0C4: @ 801D0C4
thumb_func_start mevent_srv_common_do_exec
mevent_srv_common_do_exec: @ 801D0C4
push {r4-r6,lr}
adds r6, r0, 0
ldr r4, =gUnknown_02022C7C
@ -69,7 +69,7 @@ _0801D0F8:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_801D0C4
thumb_func_end mevent_srv_common_do_exec
thumb_func_start mevent_srv_init_common
mevent_srv_init_common: @ 801D100
@ -493,7 +493,7 @@ _0801D422:
b _0801D464
_0801D43C:
ldr r4, [r5, 0x1C]
bl sub_801B00C
bl sav1_get_mevent_buffer_0
adds r1, r0, 0
movs r2, 0xDE
lsls r2, 1

View File

@ -5,11 +5,11 @@
.text
thumb_func_start sub_801D484
sub_801D484: @ 801D484
thumb_func_start mevent_srv_ish_do_init
mevent_srv_ish_do_init: @ 801D484
push {r4,r5,lr}
adds r5, r0, 0
ldr r4, =gUnknown_02022C80
ldr r4, =s_mevent_srv_ish_ptr
movs r0, 0x50
bl AllocZeroed
str r0, [r4]
@ -22,13 +22,13 @@ sub_801D484: @ 801D484
pop {r0}
bx r0
.pool
thumb_func_end sub_801D484
thumb_func_end mevent_srv_ish_do_init
thumb_func_start sub_801D4A8
sub_801D4A8: @ 801D4A8
thumb_func_start mevent_srv_ish_do_exec
mevent_srv_ish_do_exec: @ 801D4A8
push {r4-r6,lr}
adds r6, r0, 0
ldr r4, =gUnknown_02022C80
ldr r4, =s_mevent_srv_ish_ptr
ldr r0, [r4]
cmp r0, 0
bne _0801D4BC
@ -43,7 +43,7 @@ _0801D4BC:
ldr r0, [r4]
ldr r1, [r0, 0x4]
strh r1, [r6]
bl sub_801D55C
bl mevent_srv_ish_free_resources
ldr r0, [r4]
bl Free
movs r0, 0
@ -54,36 +54,36 @@ _0801D4DC:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_801D4A8
thumb_func_end mevent_srv_ish_do_exec
thumb_func_start sub_801D4E4
sub_801D4E4: @ 801D4E4
ldr r0, =gUnknown_02022C80
thumb_func_start mevent_srv_ish_inc_flag
mevent_srv_ish_inc_flag: @ 801D4E4
ldr r0, =s_mevent_srv_ish_ptr
ldr r1, [r0]
ldr r0, [r1, 0xC]
adds r0, 0x1
str r0, [r1, 0xC]
bx lr
.pool
thumb_func_end sub_801D4E4
thumb_func_end mevent_srv_ish_inc_flag
thumb_func_start sub_801D4F4
sub_801D4F4: @ 801D4F4
ldr r0, =gUnknown_02022C80
thumb_func_start mevent_srv_ish_get_buffer
mevent_srv_ish_get_buffer: @ 801D4F4
ldr r0, =s_mevent_srv_ish_ptr
ldr r0, [r0]
ldr r0, [r0, 0x20]
bx lr
.pool
thumb_func_end sub_801D4F4
thumb_func_end mevent_srv_ish_get_buffer
thumb_func_start sub_801D500
sub_801D500: @ 801D500
ldr r1, =gUnknown_02022C80
thumb_func_start mevent_srv_ish_set_param
mevent_srv_ish_set_param: @ 801D500
ldr r1, =s_mevent_srv_ish_ptr
ldr r1, [r1]
str r0, [r1, 0x4]
bx lr
.pool
thumb_func_end sub_801D500
thumb_func_end mevent_srv_ish_set_param
thumb_func_start mevent_srv_ish_init
mevent_srv_ish_init: @ 801D50C
@ -123,8 +123,8 @@ mevent_srv_ish_init: @ 801D50C
bx r0
thumb_func_end mevent_srv_ish_init
thumb_func_start sub_801D55C
sub_801D55C: @ 801D55C
thumb_func_start mevent_srv_ish_free_resources
mevent_srv_ish_free_resources: @ 801D55C
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4, 0x14]
@ -138,10 +138,10 @@ sub_801D55C: @ 801D55C
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_801D55C
thumb_func_end mevent_srv_ish_free_resources
thumb_func_start sub_801D580
sub_801D580: @ 801D580
thumb_func_start mevent_srv_ish_jmp_buffer
mevent_srv_ish_jmp_buffer: @ 801D580
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4, 0x1C]
@ -154,7 +154,7 @@ sub_801D580: @ 801D580
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_801D580
thumb_func_end mevent_srv_ish_jmp_buffer
thumb_func_start sub_801D59C
sub_801D59C: @ 801D59C
@ -340,7 +340,7 @@ _0801D708:
bne _0801D804
_0801D70E:
adds r0, r4, 0
bl sub_801D580
bl mevent_srv_ish_jmp_buffer
b _0801D804
_0801D716:
ldr r0, [r4, 0x20]

View File

@ -5491,7 +5491,7 @@ _0802D4A4:
ldrb r0, [r0, 0x12]
movs r1, 0x1
movs r2, 0xE
bl sub_8098858
bl DrawTextBorderOuter
movs r0, 0x17
movs r1, 0x7
movs r2, 0
@ -5575,7 +5575,7 @@ _0802D550:
ldrb r0, [r0, 0x12]
movs r1, 0x1
movs r2, 0xE
bl sub_8098858
bl DrawTextBorderOuter
movs r0, 0
bl CopyBgTilemapBufferToVram
_0802D574:
@ -5693,7 +5693,7 @@ _0802D640:
ldrb r0, [r0, 0x12]
movs r1, 0x1
movs r2, 0xE
bl sub_8098858
bl DrawTextBorderOuter
movs r0, 0
bl CopyBgTilemapBufferToVram
_0802D664:
@ -5773,7 +5773,7 @@ _0802D6E4:
ldrb r0, [r0, 0x12]
movs r1, 0x1
movs r2, 0xE
bl sub_8098858
bl DrawTextBorderOuter
movs r0, 0
bl CopyBgTilemapBufferToVram
_0802D708:
@ -6107,7 +6107,7 @@ _0802D99A:
ldrb r0, [r0, 0x12]
movs r1, 0x1
movs r2, 0xE
bl sub_8098858
bl DrawTextBorderOuter
movs r0, 0
bl CopyBgTilemapBufferToVram
ldr r1, [r4]
@ -7596,7 +7596,7 @@ sub_802E500: @ 802E500
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0xD
bl sub_8098858
bl DrawTextBorderOuter
adds r0, r4, 0
movs r1, 0x11
bl FillWindowPixelBuffer

View File

@ -8104,7 +8104,7 @@ sub_81CC09C: @ 81CC09C
ldrb r0, [r4, 0x14]
movs r1, 0x1
movs r2, 0x4
bl sub_8098858
bl DrawTextBorderOuter
ldrb r0, [r4, 0x14]
movs r1, 0x11
bl FillWindowPixelBuffer
@ -9354,7 +9354,7 @@ sub_81CCA1C: @ 81CCA1C
ldrb r0, [r5, 0x8]
movs r1, 0x42
movs r2, 0x4
bl sub_8098858
bl DrawTextBorderOuter
ldr r1, =gUnknown_08622888
str r4, [sp]
movs r0, 0x1

File diff suppressed because it is too large Load Diff

View File

@ -1,412 +0,0 @@
#include "constants/species.h"
#include "constants/moves.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2, 0
gUnknown_08587A6C:: @ 8587A6C
.byte 0x24, 0x4c, 0x74, 0x9c
gUnknown_08587A70:: @ 8587A70
.byte 0x24, 0x4c, 0x74, 0x9c
.align 2
gUnknown_08587A74:: @ 8587A74
obj_tiles gTiles_8C19450, 0x0020, 0x4e20
.align 2
gOamData_8587A7C:: @ 8587A7C
.2byte 0x0000
.2byte 0x0000
.2byte 0x0000
.align 2
gSpriteAffineAnim_8587A84:: @ 8587A84
obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
obj_rot_scal_anim_end
.align 2
gSpriteAffineAnim_8587A94:: @ 8587A94
obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
obj_rot_scal_anim_frame 0xFFF6, 0xFFF6, -20, 20
obj_rot_scal_anim_end
.align 2
gSpriteAffineAnim_8587AAC:: @ 8587AAC
obj_rot_scal_anim_frame 0x38, 0x38, 0, 0
obj_rot_scal_anim_frame 0xA, 0xA, 20, 20
obj_rot_scal_anim_end
.align 2
gSpriteAffineAnimTable_8587AC4:: @ 8587AC4
.4byte gSpriteAffineAnim_8587A84
.4byte gSpriteAffineAnim_8587A94
.4byte gSpriteAffineAnim_8587AAC
.align 2
gSpriteTemplate_8587AD0:: @ 8587AD0
spr_template 0x4e20, 0xabe0, gOamData_8587A7C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_8587AC4, SpriteCallbackDummy
.align 2
gUnknown_08587AE8:: @ 8587AE8
obj_tiles gContestNextTurnGfx, 0x0100, 0x4e22
obj_tiles gContestNextTurnGfx, 0x0100, 0x4e23
obj_tiles gContestNextTurnGfx, 0x0100, 0x4e24
obj_tiles gContestNextTurnGfx, 0x0100, 0x4e25
.align 2
gUnknown_08587B08:: @ 8587B08
obj_pal gContestPal, 0x4e22
.align 2
gOamData_8587B10:: @ 8587B10
.2byte 0x4000
.2byte 0x4000
.2byte 0x0000
.align 2
gSpriteTemplate_8587B18:: @ 8587B18
spr_template 0x4e22, 0x4e22, gOamData_8587B10, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
spr_template 0x4e23, 0x4e22, gOamData_8587B10, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
spr_template 0x4e24, 0x4e22, gOamData_8587B10, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
spr_template 0x4e25, 0x4e22, gOamData_8587B10, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gSubspriteTable_8587B78:: @ 8587B78
subsprite -28, -4, 0, 0, 32x8
subsprite 4, -4, 0, 4, 32x8
.align 2
gSubspriteTables_8587B80:: @ 8587B80
.4byte 2, gSubspriteTable_8587B78
.align 2
gUnknown_08587B88:: @ 8587B88
obj_tiles gUnknown_08C19168, 0x0180, 0xabe1
.align 2
gOamData_8587B90:: @ 8587B90
.2byte 0x0000
.2byte 0x4000
.2byte 0x0000
.align 2
gSpriteTemplate_8587B98:: @ 8587B98
spr_template 0xabe1, 0xabe0, gOamData_8587B90, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_08587BB0:: @ 8587BB0
obj_tiles gContestApplauseGfx, 0x0400, 0xabe2
.align 2
gUnknown_08587BB8:: @ 8587BB8
obj_pal gContestPal, 0xabe2
.align 2
gOamData_8587BC0:: @ 8587BC0
.2byte 0x4000
.2byte 0xC000
.2byte 0x0000
.align 2
gSpriteTemplate_8587BC8:: @ 8587BC8
spr_template 0xabe2, 0xabe2, gOamData_8587BC0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gOamData_8587BE0:: @ 8587BE0
.2byte 0x0000
.2byte 0xC000
.2byte 0x2C00
.align 2
gSpriteTemplate_8587BE8:: @ 8587BE8
spr_template 0x4e21, 0x4e21, gOamData_8587BE0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_08587C00:: @ 8587C00
obj_tiles gContestJudgeGfx, 0x0800, 0x4e21
.align 2
gUnknown_08587C08:: @ 8587C08
obj_tiles gContestJudgeSymbolsGfx, 0x0380, 0xabe0
.align 2
gUnknown_08587C10:: @ 8587C10
obj_pal gContest3Pal, 0xabe0
.align 2
gSpriteTemplate_8587C18:: @ 8587C18
spr_template 0xabe0, 0xabe0, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_08587C30:: @ 8587C30
.incbin "graphics/unknown/unknown_587C30.gbapal"
@ 8587C50
.include "data/text/contest_text_pointers.inc"
.align 2
gUnknown_08587D5C:: @ 8587D5C
.4byte gText_0827D5C1
.4byte gText_0827D5DC
.4byte gText_0827D600
.4byte gText_0827D612
.4byte gText_0827D612
.4byte gText_0827D62D
.4byte gText_0827D654
.4byte gText_0827D67E
.4byte gText_0827D69C
.4byte gText_0827D6BA
.4byte gText_0827D6E5
.4byte gText_0827D706
.4byte gText_0827D71D
.align 2
gUnknown_08587D90:: @ 8587D90
.4byte gText_0827D743
.4byte gText_0827D764
.4byte gText_0827D785
.4byte gText_0827D7A5
.4byte gText_0827D7C8
.4byte gText_0827D7E8
.4byte gText_0827D831
.4byte gText_0827D855
.4byte gText_0827D830
.4byte gText_0827D872
.4byte gText_0827D88F
.4byte gText_0827D8B5
.4byte gText_0827D8E4
.4byte gText_0827D8FE
.4byte gText_0827D926
.4byte gText_0827D947
.4byte gText_0827D961
.4byte gText_0827D986
.4byte gText_0827D9B1
.4byte gText_0827D9D9
.4byte gText_0827DA03
.4byte gText_0827DA31
.4byte gText_0827DA5B
.4byte gText_0827DA85
.4byte gText_0827DAB2
.4byte gText_0827DADA
.4byte gText_0827DB03
.4byte gText_0827D830
.4byte gText_0827D830
.4byte gText_0827D830
.4byte gText_0827DB1F
.4byte gText_0827DB4E
.align 2
gUnknown_08587E10:: @ 8587E10
.4byte gText_827DB75
.4byte gText_827DBB0
.4byte gText_827DBE0
.4byte gText_827DC0F
.4byte gText_827DC45
.4byte gText_827DC7C
.4byte gText_827DCB4
.4byte gText_827DCE7
.4byte gText_827DD12
.4byte gText_827DD3D
.4byte gText_827DD6F
.4byte gText_827DD8E
.4byte gText_827DDC7
.4byte gText_827DDF2
.4byte gText_827DE14
.4byte gText_827DE44
.4byte gText_827DE73
.4byte gText_827DEA5
.4byte gText_827DED9
.4byte gText_827DF02
.4byte gText_827DF3A
.4byte gText_827DF63
.4byte gText_827DF8C
.4byte gText_827DFB8
.4byte gText_827DFE2
.4byte gText_827E00C
.4byte gText_827E02F
.4byte gText_827E05F
.4byte gText_827E08B
.4byte gText_827E0B5
.4byte gText_827E0DD
.4byte gText_827E107
.4byte gText_827E143
.4byte gText_827E17F
.4byte gText_827E1BB
.4byte gText_827E1F3
.4byte gText_827E220
.4byte gText_827E254
.4byte gText_827E289
.4byte gText_827E2C5
.4byte gText_0827E2FE
.4byte gText_0827E32E
.4byte gText_0827E35B
.4byte gText_0827E38D
.4byte gText_0827E3C1
.4byte gText_0827E3EB
.4byte gText_0827E416
.4byte gText_0827E448
.4byte gText_0827E473
.4byte gText_0827E4A6
.4byte gText_0827E4D5
.4byte gText_0827E504
.4byte gText_0827E531
.4byte gText_0827E55A
.4byte gText_0827E5B2
.4byte gText_0827E5D0
.4byte gText_0827E606
.4byte gText_0827E638
.4byte gText_0827E658
.4byte gText_0827E68B
.4byte gText_0827E6C4
.4byte gText_0827E7BA
.align 2
gUnknown_08587F08:: @ 8587F08
.4byte gText_0827E85F
.4byte gText_0827E868
.4byte gText_0827E86F
.4byte gText_0827E878
.4byte gText_0827E882
.align 2
gUnknown_08587F1C:: @ 8587F1C
.4byte gText_0827E894
.4byte gText_0827E89E
.4byte gText_0827E8AA
.4byte gText_0827E8B4
.4byte gText_0827E8BF
.4byte gText_0827E8CA
.align 2
gUnknown_08587F34:: @ 8587F34
.4byte 0x00000580, 0x000015e9, 0x000005c2, 0x000031a3
.align 2
gUnknown_08587F44:: @ 8587F44
window_template 0x00, 0x12, 0x00, 0x0c, 0x02, 0x0f, 0x0200
window_template 0x00, 0x12, 0x05, 0x0c, 0x02, 0x0f, 0x0218
window_template 0x00, 0x12, 0x0a, 0x0c, 0x02, 0x0f, 0x0230
window_template 0x00, 0x12, 0x0f, 0x0c, 0x02, 0x0f, 0x0248
window_template 0x00, 0x01, 0x0f, 0x11, 0x04, 0x0f, 0x0260
window_template 0x00, 0x01, 0x1f, 0x09, 0x02, 0x0f, 0x02a4
window_template 0x00, 0x01, 0x21, 0x09, 0x02, 0x0f, 0x02b6
window_template 0x00, 0x01, 0x23, 0x09, 0x02, 0x0f, 0x02c8
window_template 0x00, 0x01, 0x25, 0x09, 0x02, 0x0f, 0x02da
window_template 0x00, 0x10, 0x1f, 0x01, 0x02, 0x0f, 0x02ec
window_template 0x00, 0x0b, 0x23, 0x12, 0x04, 0x0f, 0x02ee
null_window_template
.align 2
gUnknown_08587FA4:: @ 8587FA4
.4byte NULL, 0xFFFF
.2byte SPECIES_ELECTRIKE
.byte 2
.string "ELECTER$", 11
.string "EZRA$", 8
.2byte 0
.4byte NULL, 0xFFFF
.2byte SPECIES_TROPIUS
.byte 0
.string "TROPO$", 11
.string "ALLAN$", 8
.2byte 2
.4byte NULL, 0xFFFF
.2byte SPECIES_XATU
.byte 1
.string "TUXA$", 11
.string "JULIET$", 8
.2byte 0
.4byte NULL, 0xFFFF
.2byte SPECIES_PLUSLE
.byte 4
.string "PULSE$", 11
.string "BAILY$", 8
.2byte 3
.4byte NULL, 0xFFFF
.2byte SPECIES_SHUPPET
.byte 3
.string "SHUPUP$", 11
.string "MELANY$", 8
.2byte 1
.4byte NULL, 0xFFFF
.2byte SPECIES_ZANGOOSE
.byte 0
.string "GOOZAN$", 11
.string "HANA$", 8
.2byte 2
.4byte NULL, 0xFFFF
.2byte SPECIES_LOUDRED
.byte 1
.string "LOUDED$", 11
.string "BRYANT$", 8
.2byte 2
.4byte NULL, 0xFFFF
.2byte SPECIES_DELCATTY
.byte 2
.string "KITSY$", 11
.string "OMAR$", 8
.2byte 3
.align 2
gContestOpponents:: @ 85880A4
.include "data/contest_opponents.inc"
gUnknown_085898A4:: @ 85898A4
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
.byte 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02
.align 2
gUnknown_08589904:: @ 8589904
obj_tiles gBlankGfxCompressed, 0x1000, 0x80e8
obj_tiles gBlankGfxCompressed, 0x1000, 0x80e9
obj_tiles gBlankGfxCompressed, 0x1000, 0x80ea
obj_tiles gBlankGfxCompressed, 0x1000, 0x80eb
.align 2
gUnknown_08589924:: @ 8589924 Yup this is super dangerous but that's how it is here
obj_pal gHeap + 0x1A0A4, 0x80e8
obj_pal gHeap + 0x1A0C4, 0x80e9
obj_pal gHeap + 0x1A0E4, 0x80ea
obj_pal gHeap + 0x1A104, 0x80eb
.align 2
gOamData_8589944:: @ 8589944
.2byte 0x0700
.2byte 0xC000
.2byte 0x0000
.align 2
gSpriteAffineAnim_858994C:: @ 858994C
obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
obj_rot_scal_anim_end
.align 2
gSpriteAffineAnim_858995C:: @ 858995C
obj_rot_scal_anim_frame 0x3, 0x3, 0, 15
obj_rot_scal_anim_frame 0xFFFD, 0xFFFD, 0, 15
obj_rot_scal_anim_frame 0x3, 0x3, 0, 15
obj_rot_scal_anim_frame 0xFFFD, 0xFFFD, 0, 15
obj_rot_scal_anim_end
.align 2
gSpriteAffineAnimTable_8589984:: @ 8589984
.4byte gSpriteAffineAnim_858994C
.4byte gSpriteAffineAnim_858995C
.align 2
gSpriteTemplate_858998C:: @ 858998C
spr_template 0x80e8, 0x80e8, gOamData_8589944, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_8589984, SpriteCallbackDummy
spr_template 0x80e9, 0x80e9, gOamData_8589944, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_8589984, SpriteCallbackDummy
spr_template 0x80ea, 0x80ea, gOamData_8589944, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_8589984, SpriteCallbackDummy
spr_template 0x80eb, 0x80eb, gOamData_8589944, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_8589984, SpriteCallbackDummy
.align 2
gContestExcitementTable:: @ 85899EC
.2byte 0x0001, 0xffff, 0x0000, 0x0001, 0xffff, 0x00ff, 0x0001, 0xffff, 0x00ff, 0x0001, 0xff00, 0x00ff, 0x0001, 0x0000

File diff suppressed because it is too large Load Diff

View File

@ -59,4 +59,4 @@
],
"coord_events": [],
"bg_events": []
}
}

View File

@ -22,7 +22,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276AD5:: @ 8276AD5
specialvar VAR_RESULT, sub_813B514
compare VAR_RESULT, 1
goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_276AFB
specialvar VAR_RESULT, sub_801B27C
specialvar VAR_RESULT, ValidateReceivedWonderCard
compare VAR_RESULT, 0
goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_276AFF
goto OldaleTown_PokemonCenter_2F_EventScript_276AFB

View File

@ -434,7 +434,7 @@ gSpecials:: @ 81DBA64
def_special sub_81B8958
def_special sub_8018090
def_special sub_813990C
def_special sub_801B27C
def_special ValidateReceivedWonderCard
def_special HasAtLeastOneBerry
def_special sub_802C920
def_special sub_802E3C4

View File

@ -1,78 +0,0 @@
.align 2
gContestEffectDescriptionPointers:: @ 8587C50
.4byte gContestEffect00hDescription
.4byte gContestEffect01hDescription
.4byte gContestEffect02hDescription
.4byte gContestEffect03hDescription
.4byte gContestEffect04hDescription
.4byte gContestEffect05hDescription
.4byte gContestEffect06hDescription
.4byte gContestEffect07hDescription
.4byte gContestEffect08hDescription
.4byte gContestEffect09hDescription
.4byte gContestEffect0AhDescription
.4byte gContestEffect0BhDescription
.4byte gContestEffect0ChDescription
.4byte gContestEffect0DhDescription
.4byte gContestEffect0EhDescription
.4byte gContestEffect0FhDescription
.4byte gContestEffect10hDescription
.4byte gContestEffect11hDescription
.4byte gContestEffect12hDescription
.4byte gContestEffect13hDescription
.4byte gContestEffect14hDescription
.4byte gContestEffect15hDescription
.4byte gContestEffect16hDescription
.4byte gContestEffect17hDescription
.4byte gContestEffect18hDescription
.4byte gContestEffect19hDescription
.4byte gContestEffect1AhDescription
.4byte gContestEffect1BhDescription
.4byte gContestEffect1ChDescription
.4byte gContestEffect1DhDescription
.4byte gContestEffect1EhDescription
.4byte gContestEffect1FhDescription
.4byte gContestEffect20hDescription
.4byte gContestEffect21hDescription
.4byte gContestEffect22hDescription
.4byte gContestEffect23hDescription
.4byte gContestEffect24hDescription
.4byte gContestEffect25hDescription
.4byte gContestEffect26hDescription
.4byte gContestEffect27hDescription
.4byte gContestEffect28hDescription
.4byte gContestEffect29hDescription
.4byte gContestEffect2AhDescription
.4byte gContestEffect2BhDescription
.4byte gContestEffect2ChDescription
.4byte gContestEffect2DhDescription
.4byte gContestEffect2EhDescription
.4byte gContestEffect2FhDescription
@ 8587D10
@ Unreferenced array of pointers to move names.
@ All of the moves except Conversion are combo starters, so this may have
@ been an early list of combo starters.
.align 2
.4byte gUnusedContestMoveName0
.4byte gUnusedContestMoveName0
.4byte gUnusedContestMoveName1
.4byte gUnusedContestMoveName2
.4byte gUnusedContestMoveName3
.4byte gUnusedContestMoveName4
.4byte gUnusedContestMoveName5
.4byte gUnusedContestMoveName6
.4byte gUnusedContestMoveName7
.4byte gUnusedContestMoveName8
.4byte gUnusedContestMoveName9
.4byte gUnusedContestMoveName10
.4byte gUnusedContestMoveName11
.4byte gUnusedContestMoveName12
.align 2
gContestMoveTypeTextPointers:: @ 8587D48
.4byte gContestMoveTypeCoolText
.4byte gContestMoveTypeBeautyText
.4byte gContestMoveTypeCuteText
.4byte gContestMoveTypeSmartText
.4byte gContestMoveTypeToughText

View File

@ -1,99 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_082F072C:: @ 82F072C
.byte 0x21, 0x2c, 0x1f, 0x23, 0x25, 0x24, 0x41, 0x42
.byte 0x00, 0x00, 0x22, 0x28, 0x20, 0x2f, 0x2f, 0x0e
.byte 0x14, 0x2d, 0x00, 0x00
.align 2
gUnknown_082F0740:: @ 82F0740
.2byte 0x0004, 0x0006, 0x000d, 0x0008
.2byte 0x000a, 0x0006, 0x0001, 0x0008
.2byte 0x000d, 0x0004, 0x0007, 0x0004
.2byte 0x0001, 0x0004, 0x0007, 0x0008
.align 2
gUnknown_082F0760:: @ 82F0760
.byte 0x00, 0x00, 0x01, 0x00, 0x00, 0xff, 0xff, 0x00
.byte 0x00, 0x01
gUnknown_082F076A:: @ 82F076A
.byte 0x00, 0x02, 0x01, 0x04, 0x03
gUnknown_082F076F:: @ 82F076F
.byte 0x01, 0x03, 0x01, 0x04, 0x02
gUnknown_082F0774:: @ 82F0774
.byte 0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03
.byte 0xbf, 0x02, 0xc0, 0x02, 0xc1, 0x02, 0xc2, 0x02
.byte 0xc3, 0x02, 0xc4, 0x02, 0xc5, 0x02, 0xc6, 0x02
gUnknown_082F078C:: @ 82F078C
.byte 0x9c, 0xfe
gUnknown_082F078E:: @ 82F078E
.byte 0x9d, 0xfe
.align 2
gWirelessInfoScreenPal:: @ 82F0790
.incbin "graphics/interface/wireless_info_screen.gbapal"
.align 2
gWirelessInfoScreenGfx:: @ 82F0990
.incbin "graphics/interface/wireless_info_screen.4bpp.lz"
.align 2
gWirelessInfoScreenTilemap:: @ 82F0BA0
.incbin "graphics/interface/wireless_info_screen.bin.lz"
.align 2
gUnknown_082F0D34:: @ 82F0D34
.4byte 0x000001f8
.4byte 0x00001081
.align 2
gUnknown_082F0D3C:: @ 82F0D3C
window_template 0x00, 0x03, 0x00, 0x18, 0x03, 0x0f, 0x0001
window_template 0x00, 0x03, 0x04, 0x15, 0x0f, 0x0f, 0x0049
window_template 0x00, 0x18, 0x04, 0x03, 0x0f, 0x0f, 0x0184
null_window_template
.align 2
gUnknown_082F0D5C:: @ 82F0D5C
.4byte gText_WirelessCommStatus
.4byte gText_PeopleTrading
.4byte gText_PeopleBattling
.4byte gText_PeopleInUnionRoom
.4byte gText_PeopleCommunicating
.align 2
gUnknown_082F0D70:: @ 82F0D70
.byte 0x01, 0x01, 0x02, 0x02, 0x01, 0x02, 0x03, 0x01
.byte 0x04, 0x04, 0x00, 0x02, 0x06, 0x03, 0x02, 0x07
.byte 0x03, 0x02, 0x09, 0x03, 0x00, 0x0a, 0x03, 0x00
.byte 0x0b, 0x03, 0x00, 0x0c, 0xff, 0x00, 0x0d, 0x00
.byte 0x00, 0x10, 0x03, 0x00, 0x0f, 0x03, 0x00, 0x40
.byte 0x02, 0x01, 0x41, 0x02, 0x02, 0x44, 0x02, 0x02
.byte 0x45, 0x02, 0x00, 0x48, 0x02, 0x02, 0x54, 0x02
.byte 0x01, 0x53, 0x02, 0x02, 0x51, 0x02, 0x01, 0x52
.byte 0x02, 0x01, 0x15, 0x03, 0x02, 0x16, 0x03, 0x02
.byte 0x17, 0x03, 0x00, 0x18, 0x03, 0x00, 0x19, 0x03
.byte 0x00, 0x1a, 0x03, 0x00, 0x1b, 0x03, 0x00, 0x1c
.byte 0x01, 0x02, 0x0e, 0x01, 0x02, 0x00, 0x00, 0x00
.align 2
gUnknown_082F0DD0:: @ 82F0DD0
.4byte 0x000001FC
.align 2
gUnknown_082F0DD4:: @ 82F0DD4
window_template 0x00, 0x03, 0x0f, 0x18, 0x04, 0x0e, 0x0014
null_window_template
.align 2
gUnknown_082F0DE4:: @ 82F0DE4
.byte 0x01, 0x02, 0x03

View File

@ -242,4 +242,6 @@
#define MOVEMENT_ACTION_FLY_UP 0x9C
#define MOVEMENT_ACTION_FLY_DOWN 0x9D
#define MOVEMENT_ACTION_STEP_END 0xFE
#endif // GUARD_CONSTANTS_EVENTOBJMV_H

View File

@ -51,7 +51,7 @@
#define GAME_STAT_USED_DAYCARE 47
#define GAME_STAT_RODE_CABLE_CAR 48
#define GAME_STAT_ENTERED_HOT_SPRINGS 49
#define GAME_STAT_50 50
#define GAME_STAT_NUM_UNION_ROOM_BATTLES 50
#define GAME_STAT_51 51
#define NUM_USED_GAME_STATS 52

View File

@ -9,4 +9,10 @@
#define MAP_GROUP(map) (MAP_##map >> 8)
#define MAP_NUM(map) (MAP_##map & 0xFF)
// These groups are used by pokedex_area_screen.c to find wild
// pokemon locations.
#define MAP_GROUP_OVERWORLD_MONS MAP_GROUP(PETALBURG_CITY)
#define MAP_GROUP_SPECIAL_MONS_1 MAP_GROUP(METEOR_FALLS_1F_1R)
#define MAP_GROUP_SPECIAL_MONS_2 MAP_GROUP(SAFARI_ZONE_NORTHWEST)
#endif // GUARD_CONSTANTS_MAPS_H

View File

@ -196,19 +196,33 @@ enum
CONTEST_STRING_NONE = 255
};
enum {
CONTEST_RANK_NORMAL,
CONTEST_RANK_SUPER,
CONTEST_RANK_HYPER,
CONTEST_RANK_MASTER,
CONTEST_RANK_LINK
};
enum {
CONTEST_FILTER_NONE,
CONTEST_FILTER_NO_POSTGAME,
CONTEST_FILTER_ONLY_POSTGAME
};
struct ContestPokemon
{
/*0x00*/ u16 species;
/*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0D*/ u8 trainerName[8];
/*0x0D*/ u8 trainerName[PLAYER_NAME_LENGTH + 1];
/*0x15*/ u8 trainerGfxId;
/*0x18*/ u32 flags;
/*0x1C*/ u8 whichRank:2;
u8 aiPool_Cool:1;
u8 aiPool_Beauty:1;
u8 aiPool_Cute:1;
u8 aiPool_Smart:1;
u8 aiPool_Tough:1;
/*0x1C*/ u8 whichRank:2; // 0x1 0x2
u8 aiPool_Cool:1; // 0x4
u8 aiPool_Beauty:1; // 0x8
u8 aiPool_Cute:1; // 0x10
u8 aiPool_Smart:1; // 0x20
u8 aiPool_Tough:1; // 0x40
/*0x1E*/ u16 moves[4]; // moves
/*0x26*/ u8 cool; // cool
/*0x27*/ u8 beauty; // beauty
@ -219,7 +233,7 @@ struct ContestPokemon
/*0x2C*/ u8 unk2C[12];
/*0x38*/ u32 personality; // personality
/*0x3C*/ u32 otId; // otId
}; // wow
};
struct Shared18000
{

View File

@ -1,6 +1,6 @@
#ifndef GUARD_EREADER_SCREEN_H
#define GUARD_EREADER_SCREEN_H
void sub_81D5014(void);
void task_add_00_ereader(void);
#endif // GUARD_EREADER_SCREEN_H

View File

@ -413,5 +413,10 @@ u8 MovementType_RunInPlace_Step0(struct EventObject *, struct Sprite *);
u8 MovementType_Invisible_Step0(struct EventObject *, struct Sprite *);
u8 MovementType_Invisible_Step1(struct EventObject *, struct Sprite *);
u8 MovementType_Invisible_Step2(struct EventObject *, struct Sprite *);
void sub_8097C44(u8 var, bool32 var2);
bool32 sub_8097C8C(u8 var);
void sub_8097BB4(u8 var1, u8 graphicsId);
void sub_8097CC4(u8 var1, u8 var2);
bool32 sub_8097D9C(u8 var);
#endif //GUARD_FIELD_EVENT_OBJ_H

View File

@ -1,17 +1,6 @@
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
enum {
PLAYER_AVATAR_STATE_NORMAL,
PLAYER_AVATAR_STATE_MACH_BIKE,
PLAYER_AVATAR_STATE_ACRO_BIKE,
PLAYER_AVATAR_STATE_SURFING,
PLAYER_AVATAR_STATE_UNDERWATER,
PLAYER_AVATAR_STATE_FIELD_MOVE,
PLAYER_AVATAR_STATE_FISHING,
PLAYER_AVATAR_STATE_WATERING,
};
void player_step(u8 a, u16 b, u16 c);
void ClearPlayerAvatarInfo(void);
void SetPlayerAvatarExtraStateTransition(u8, u8);
@ -73,5 +62,6 @@ void sub_808D1C8(void);
bool32 sub_808D1B4(void);
bool32 sub_808D1E8(void);
void sub_808C0A8(u8 a);
u8 player_get_pos_including_state_based_drift(s16 *x, s16 *y);
#endif // GUARD_FIELD_PLAYER_AVATAR_H

View File

@ -50,5 +50,6 @@ void SpriteCB_HallOfFameMonitor(struct Sprite *);
// field_region_map.c
void FieldInitRegionMap(MainCallback callback);
void sub_8088B94(int x, int y, int a2);
#endif //GUARD_FIELDMAP_H

View File

@ -10,6 +10,7 @@ void FixLongGrassMetatilesWindowTop(s16 x, s16 y);
void FixLongGrassMetatilesWindowBottom(s16 x, s16 y);
extern const struct SpritePalette gFieldEffectObjectPaletteInfo6;
extern struct MapPosition gPlayerFacingPosition;
// groundshake
bool8 sub_81BE66C(void);

View File

@ -232,14 +232,25 @@ struct EventObjectGraphicsInfo
/*0x20*/ const union AffineAnimCmd *const *affineAnims;
};
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
#define PLAYER_AVATAR_FLAG_5 (1 << 5)
#define PLAYER_AVATAR_FLAG_6 (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
enum {
PLAYER_AVATAR_STATE_NORMAL,
PLAYER_AVATAR_STATE_MACH_BIKE,
PLAYER_AVATAR_STATE_ACRO_BIKE,
PLAYER_AVATAR_STATE_SURFING,
PLAYER_AVATAR_STATE_UNDERWATER,
PLAYER_AVATAR_STATE_FIELD_MOVE,
PLAYER_AVATAR_STATE_FISHING,
PLAYER_AVATAR_STATE_WATERING,
};
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << PLAYER_AVATAR_STATE_NORMAL)
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << PLAYER_AVATAR_STATE_MACH_BIKE)
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << PLAYER_AVATAR_STATE_ACRO_BIKE)
#define PLAYER_AVATAR_FLAG_SURFING (1 << PLAYER_AVATAR_STATE_SURFING)
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << PLAYER_AVATAR_STATE_UNDERWATER)
#define PLAYER_AVATAR_FLAG_5 (1 << PLAYER_AVATAR_STATE_FIELD_MOVE)
#define PLAYER_AVATAR_FLAG_6 (1 << PLAYER_AVATAR_STATE_FISHING)
#define PLAYER_AVATAR_FLAG_DASH (1 << PLAYER_AVATAR_STATE_WATERING)
enum
{

View File

@ -5032,6 +5032,14 @@ extern const u32 gUnknown_08C16FA8[];
extern const u32 gUnknown_08C16E90[];
extern const u32 gUnknown_08C17170[];
extern const u32 gUnknown_08C17980[];
extern const u32 gTiles_8C19450[];
extern const u32 gContestNextTurnGfx[];
extern const u16 gContestPal[];
extern const u32 gUnknown_08C19168[];
extern const u32 gContestApplauseGfx[];
extern const u32 gContestJudgeGfx[];
extern const u32 gContestJudgeSymbolsGfx[];
extern const u32 gContest3Pal[];
extern const u32 gUnknown_08D95E00[];
extern const u32 gUnknown_08D960D0[];

View File

@ -12,7 +12,7 @@ int GetStringCenterAlignXOffsetWithLetterSpacing(int fontId, const u8 *str, int
int GetStringWidthDifference(int fontId, const u8 *str, int totalWidth, int letterSpacing);
int GetMaxWidthInMenuTable(const struct MenuAction *str, int arg1);
int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2);
int sub_81DB41C(const struct ListMenuTemplate *listMenu);
int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu);
void CopyMonCategoryText(int dexNum, u8 *dest);
u8 *sub_81DB494(u8 *str, int fontId, u8 *str2, int totalStringWidth);
void PadNameString(u8 *dest, u8 padChar);

View File

@ -200,8 +200,6 @@ extern bool8 gLinkVSyncDisabled;
extern u32 gLinkStatus;
void c2_mystery_gift(void);
void sub_801867C(void);
bool8 IsWirelessAdapterConnected(void);
void Task_DestroySelf(u8 taskId);
void OpenLink(void);

View File

@ -260,7 +260,7 @@ u32 sub_8010714(u16 a0, const u8 *a1);
void sub_8011DC0(const u8 *a0, u16 a1);
bool8 sub_800EF1C(void);
bool32 sub_800EF58(bool32 a0);
void sub_800E084(void);
void DestroyWirelessStatusIndicatorSprite(void);
void sub_801103C(void);
void sub_8011C5C(void);
void sub_80106D4(void);

View File

@ -71,6 +71,6 @@ void RestoreSerialTimer3IntrHandlers(void);
void StartTimer1(void);
void SeedRngAndSetTrainerId(void);
u16 GetGeneratedTrainerIdLower(void);
void sub_819789C(void);
#endif // GUARD_MAIN_H

View File

@ -35,7 +35,7 @@ void SetStandardWindowBorderStyle(u8 windowId, bool8 copyToVram);
void DisplayYesNoMenuDefaultYes(void);
u32 GetPlayerTextSpeed(void);
u8 GetPlayerTextSpeedDelay(void);
void sub_81978B0(u16 arg0);
void Menu_LoadStdPalAt(u16 arg0);
void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16));
void sub_8199DF0(u32 bg, u8 a1, int a2, int a3);
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);

View File

@ -32,23 +32,23 @@ struct MEventStruct_Unk1442CC
};
void sub_801AFD8(void);
struct MEventBuffer_3120_Sub *sub_801B00C(void);
struct MEventBuffer_3120_Sub *sav1_get_mevent_buffer_0(void);
struct MEventBuffer_32E0_Sub *sav1_get_mevent_buffer_1(void);
struct MEventBuffer_3430_Sub *sav1_get_mevent_buffer_2(void);
struct MysteryEventStruct *sub_801B044(void);
u16 *sub_801B058(void);
void sub_801B06C(void);
void DestroyWonderNews(void);
bool32 sub_801B078(const struct MEventBuffer_3120_Sub *src);
bool32 sub_801B0CC(void);
bool32 sub_801B128(void);
bool32 ValidateReceivedWonderNews(void);
bool32 WonderNews_Test_Unk_02(void);
bool32 sub_801B1A4(const u8 *src);
void sub_801B1E8(void);
void DestroyWonderCard(void);
bool32 sub_801B21C(const struct MEventBuffer_32E0_Sub *data);
bool32 sub_801B27C(void);
bool32 sub_801B308(void);
u16 sub_801B39C(void);
bool32 ValidateReceivedWonderCard(void);
bool32 WonderCard_Test_Unk_08_6(void);
u16 GetWonderCardFlagID(void);
void sub_801B3C0(struct MEventBuffer_32E0_Sub *buffer);
bool32 sub_801B3F8(void);
bool32 CheckReceivedGiftFromWonderCard(void);
bool32 sub_801B508(const u16 *data);
void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1);
bool32 sub_801B6A0(const struct MEventStruct_Unk1442CC *data, bool32 a1);

View File

@ -1,16 +1,16 @@
#ifndef GUARD_MEVENT_801BAAC_H
#define GUARD_MEVENT_801BAAC_H
bool32 sub_801BAAC(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6);
bool32 sub_801C6C8(const struct MEventBuffer_3120_Sub * a0);
s32 sub_801BB74(void);
s32 sub_801C758(void);
s32 sub_801BDA4(bool32 flag);
void sub_801BB48(void);
s32 sub_801CA50(bool32 flag);
void sub_801C72C(void);
u32 sub_801CCD0(u16 input);
void sub_801CC80(void);
void sub_801CC38(void);
bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6);
bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0);
s32 FadeToWonderCardMenu(void);
s32 FadeToWonderNewsMenu(void);
s32 FadeOutFromWonderCard(bool32 flag);
void DestroyWonderCardResources(void);
s32 FadeOutFromWonderNews(bool32 flag);
void DestroyWonderNewsResources(void);
u32 MENews_GetInput(u16 input);
void MENews_AddScrollIndicatorArrowPair(void);
void MENews_RemoveScrollIndicatorArrowPair(void);
#endif //GUARD_MEVENT_801BAAC_H

View File

@ -2,6 +2,6 @@
#define GUARD_MEVENT_NEWS_H
void sub_801DBC0(void);
void sub_801DB68(u32 a0);
void GenerateRandomNews(u32 a0);
#endif //GUARD_MEVENT_NEWS_H

View File

@ -3,6 +3,6 @@
void mevent_srv_new_wcard();
void mevent_srv_init_wnews();
u32 sub_801D0C4(u16 * a0);
u32 mevent_srv_common_do_exec(u16 * a0);
#endif //GUARD_MEVENT_SERVER_H

View File

@ -1,10 +1,10 @@
#ifndef GUARD_MEVENT_SERVER_ISH_H
#define GUARD_MEVENT_SERVER_ISH_H
void sub_801D484(u32 arg);
u32 sub_801D4A8(u16 * a0);
void sub_801D4E4(void);
void * sub_801D4F4(void);
void sub_801D500(u32 a0);
void mevent_srv_ish_do_init(u32 arg);
u32 mevent_srv_ish_do_exec(u16 * a0);
void mevent_srv_ish_inc_flag(void);
void * mevent_srv_ish_get_buffer(void);
void mevent_srv_ish_set_param(u32 a0);
#endif //GUARD_MEVENT_SERVER_ISH_H

View File

@ -1,8 +1,16 @@
#ifndef GUARD_MYSTERY_GIFT_H
#define GUARD_MYSTERY_GIFT_H
void sub_8018438(void);
void sub_80186EC(bool8 isJapanese, bool32 usePickOkCancel);
void sub_8018798(u32 bg);
extern bool8 gGiftIsFromEReader;
u16 GetMysteryGiftBaseBlock(void);
void c2_mystery_gift_e_reader_run(void);
void PrintMysteryGiftOrEReaderTopMenu(bool8 isJapanese, bool32 usePickOkCancel);
void MG_DrawCheckerboardPattern(u32 bg);
void MainCB_FreeAllBuffersAndReturnToInitTitleScreen(void);
bool32 MG_PrintTextOnWindow1AndWaitButton(u8 *textState, const u8 *str);
void AddTextPrinterToWindow1(const u8 *src);
void c2_ereader(void);
void c2_mystery_gift(void);
#endif //GUARD_MYSTERY_GIFT_H

View File

@ -2672,5 +2672,13 @@ extern const u8 gText_CommunicationCompleted[];
extern const u8 gText_HaventReceivedGiftOkayToDiscard[];
extern const u8 gText_SendingWonderCard[];
extern const u8 gText_SendingWonderNews[];
extern const u8 gText_WirelessCommStatus[];
extern const u8 gText_PeopleTrading[];
extern const u8 gText_PeopleBattling[];
extern const u8 gText_PeopleInUnionRoom[];
extern const u8 gText_PeopleCommunicating[];
extern const u8 gText_CommStandbyAwaitingOtherPlayer[];
extern const u8 gText_RefusedBattle[];
extern const u8 gText_BattleWasRefused[];
#endif // GUARD_STRINGS_H

View File

@ -17,8 +17,8 @@ void LoadMessageBoxGfx(u8 windowId, u16 destOffset, u8 palOffset);
void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palOffset);
void LoadWindowGfx(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset);
void LoadUserWindowBorderGfx_(u8 windowId, u16 destOffset, u8 palOffset);
void sub_8098858(u8 windowId, u16 tileNum, u8 palNum);
void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum);
void DrawTextBorderOuter(u8 windowId, u16 tileNum, u8 palNum);
void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum);
void rbox_fill_rectangle(u8 windowId);
const u16 *stdpal_get(u8 id);
const u16 *GetOverworldTextboxPalettePtr(void);

View File

@ -90,7 +90,7 @@ struct UnkStruct_8019BA8
{
u8 field_0;
u8 field_1;
u8 field_2;
s8 field_2;
u8 field_3;
};
@ -165,14 +165,8 @@ u8 sub_8013F78(void);
bool32 sub_802C908(u16);
void nullsub_89(u8 taskId);
void var_800D_set_xB(void);
bool32 mevent_0814257C(u8 *textState, const u8 *str);
void sub_8018884(const u8 *src);
void sub_80186A4(void);
void sub_8014EFC(u32 arg0);
void sub_80152A8(u32 arg0);
void sub_8014A00(u32 arg0);
extern bool8 gUnknown_02022C60;
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0);
void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0);
void MEvent_CreateTask_Leader(u32 arg0);
#endif //GUARD_UNION_ROOM_H

View File

@ -0,0 +1,7 @@
#ifndef GUARD_UNION_ROOM_BATTLE_H
#define GUARD_UNION_ROOM_BATTLE_H
u8 sub_8013C40(void);
void sub_8014210(u16 battleFlags);
#endif //GUARD_UNION_ROOM_BATTLE_H

View File

@ -0,0 +1,14 @@
#ifndef GUARD_UNION_ROOM_PLAYER_AVATAR_H
#define GUARD_UNION_ROOM_PLAYER_AVATAR_H
u8 sub_8019BA8(struct UnkStruct_8019BA8 * ptr);
void sub_8019E3C(void);
void sub_8019E70(u8 *arg0, s32 arg1);
void sub_8019F04(u8 *spriteIds);
void sub_8019F2C(void);
void sub_801A274(struct UnkStruct_URoom *arg0);
void sub_801A284(struct UnkStruct_URoom *arg0);
bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H

View File

@ -56,7 +56,8 @@ SECTIONS {
src/link_rfu.o(.text);
src/union_room.o(.text);
src/mystery_gift.o(.text);
asm/union_room_player_avatar.o(.text);
src/union_room_player_avatar.o(.text);
src/union_room_battle.o(.text);
src/mevent2.o(.text);
src/mevent_801BAAC.o(.text);
asm/mevent_server.o(.text);
@ -412,7 +413,8 @@ SECTIONS {
src/link_rfu.o(.rodata);
src/union_room.o(.rodata);
src/mystery_gift.o(.rodata);
data/union_room_player_avatar.o(.rodata);
src/union_room_player_avatar.o(.rodata);
src/union_room_battle.o(.rodata);
src/mevent2.o(.rodata);
src/mevent_801BAAC.o(.rodata);
data/mevent_server.o(.rodata);
@ -487,7 +489,7 @@ SECTIONS {
src/item_menu_icons.o(.rodata);
src/battle_anim_mon_movement.o(.rodata);
src/item.o(.rodata);
data/contest.o(.rodata);
src/contest.o(.rodata);
src/shop.o(.rodata);
src/fldeff_escalator.o(.rodata);
src/berry.o(.rodata);

View File

@ -709,7 +709,7 @@ void LoadBattleMenuWindowGfx(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
{
sub_81978B0(0x70);
Menu_LoadStdPalAt(0x70);
LoadMessageBoxGfx(0, 0x30, 0x70);
gPlttBufferUnfaded[0x76] = 0;
CpuCopy16(&gPlttBufferUnfaded[0x76], &gPlttBufferFaded[0x76], 2);

View File

@ -940,7 +940,7 @@ static void InitBerryBlenderWindows(void)
FillWindowPixelBuffer(i, PIXEL_FILL(0));
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
sub_81978B0(0xE0);
Menu_LoadStdPalAt(0xE0);
}
}

View File

@ -582,7 +582,7 @@ int sub_802130C(void)
ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
break;
case 6:
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
sub_8022960(var0);
sub_8034CC8();
break;

View File

@ -218,12 +218,6 @@ EWRAM_DATA u8 gUnknown_02039F5D = 0;
// IWRAM common vars.
u32 gContestRngValue;
extern const u16 gUnknown_08587C30[];
extern const struct BgTemplate gUnknown_08587F34[4];
extern const struct WindowTemplate gUnknown_08587F44[];
extern const u8 *const gUnknown_08587D90[];
extern const u8 *const gUnknown_08587F08[];
extern const u8 *const gUnknown_08587F1C[];
extern const u8 *const gUnknown_0827E8DA[];
extern const u8 gText_0827D55A[];
extern const u8 gText_0827E793[];
@ -248,33 +242,615 @@ extern const u8 gText_Contest_Fear[];
extern const u8 gText_BDot[];
extern const u8 gText_CDot[];
extern const u8 *const gUnknown_08587E10[];
extern const struct ContestPokemon gContestOpponents[96];
extern const u8 gUnknown_085898A4[96];
extern const struct CompressedSpriteSheet gUnknown_08587C00;
extern const struct SpriteTemplate gSpriteTemplate_8587BE8;
extern const struct CompressedSpriteSheet gUnknown_08587C08;
extern const struct CompressedSpritePalette gUnknown_08587C10;
extern const struct SpriteTemplate gSpriteTemplate_8587C18;
extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const u8 *const gContestEffectDescriptionPointers[];
extern const struct SpriteSheet gUnknown_08587A74;
extern const u8 gUnknown_08587A6C[];
extern const struct SpriteTemplate gSpriteTemplate_8587AD0;
extern const struct SpritePalette gUnknown_08587B08;
extern const struct CompressedSpriteSheet gUnknown_08587AE8[];
extern const struct SpriteTemplate gSpriteTemplate_8587B18[];
extern const u8 gUnknown_08587A70[];
extern const struct SubspriteTable gSubspriteTables_8587B80[];
extern const struct CompressedSpriteSheet gUnknown_08587BB0;
extern const struct SpritePalette gUnknown_08587BB8;
extern const struct SpriteTemplate gSpriteTemplate_8587BC8;
extern void (*const gContestEffectFuncs[])(void);
extern const s8 gContestExcitementTable[][5];
extern const struct ContestWinner gUnknown_08587FA4[];
extern const struct CompressedSpriteSheet gUnknown_08589904[];
extern const struct SpritePalette gUnknown_08589924[];
extern const struct SpriteTemplate gSpriteTemplate_858998C[];
static const u8 gUnknown_08587A6C[] =
{
0x24, 0x4C, 0x74, 0x9C
};
static const u8 gUnknown_08587A70[] =
{
0x24, 0x4C, 0x74, 0x9C
};
static const struct SpriteSheet gUnknown_08587A74 =
{
.data = gTiles_8C19450,
.size = 0x20,
.tag = 0x4E20
};
static const struct OamData gOamData_8587A7C =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(8x8),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(8x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
.affineParam = 0
};
static const union AffineAnimCmd gSpriteAffineAnim_8587A84[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_END,
};
static const union AffineAnimCmd gSpriteAffineAnim_8587A94[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0xFFF6, 0xFFF6, -20, 20),
AFFINEANIMCMD_END
};
static const union AffineAnimCmd gSpriteAffineAnim_8587AAC[] =
{
AFFINEANIMCMD_FRAME(0x38, 0x38, 0, 0),
AFFINEANIMCMD_FRAME(10, 10, 20, 20),
AFFINEANIMCMD_END
};
static const union AffineAnimCmd* const gSpriteAffineAnimTable_8587AC4[] =
{
gSpriteAffineAnim_8587A84,
gSpriteAffineAnim_8587A94,
gSpriteAffineAnim_8587AAC
};
static const struct SpriteTemplate gSpriteTemplate_8587AD0 =
{
.tileTag = 0x4E20,
.paletteTag = 0xABE0,
.oam = &gOamData_8587A7C,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_8587AC4,
.callback = SpriteCallbackDummy
};
static const struct CompressedSpriteSheet gUnknown_08587AE8[] =
{
{
.data = gContestNextTurnGfx,
.size = 0x100,
.tag = 0x4E22
},
{
.data = gContestNextTurnGfx,
.size = 0x100,
.tag = 0x4E23
},
{
.data = gContestNextTurnGfx,
.size = 0x100,
.tag = 0x4E24
},
{
.data = gContestNextTurnGfx,
.size = 0x100,
.tag = 0x4E25
}
};
static const struct SpritePalette gUnknown_08587B08 =
{
.data = gContestPal,
.tag = 0x4E22
};
static const struct OamData gOamData_8587B10 =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(32x8),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(32x8),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
.affineParam = 0
};
static const struct SpriteTemplate gSpriteTemplate_8587B18[] =
{
{
.tileTag = 0x4E22,
.paletteTag = 0x4E22,
.oam = &gOamData_8587B10,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
.tileTag = 0x4E23,
.paletteTag = 0x4E22,
.oam = &gOamData_8587B10,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
.tileTag = 0x4E24,
.paletteTag = 0x4E22,
.oam = &gOamData_8587B10,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
},
{
.tileTag = 0x4E25,
.paletteTag = 0x4E22,
.oam = &gOamData_8587B10,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy,
}
};
const struct Subsprite gSubspriteTable_8587B78[] =
{
{
.x = -28,
.y = -4,
.shape = ST_OAM_H_RECTANGLE,
.size = 1,
.tileOffset = 0,
.priority = 0
},
{
.x = 4,
.y = -4,
.shape = ST_OAM_H_RECTANGLE,
.size = 1,
.tileOffset = 4,
.priority = 0
}
};
const struct SubspriteTable gSubspriteTables_8587B80[] =
{
{
.subspriteCount = 2,
.subsprites = gSubspriteTable_8587B78
}
};
const struct CompressedSpriteSheet gUnknown_08587B88 =
{
.data = gUnknown_08C19168,
.size = 0x180,
.tag = 0xABE1
};
const struct OamData gOamData_8587B90 =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(16x16),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(16x16),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
.affineParam = 0
};
const struct SpriteTemplate gSpriteTemplate_8587B98 =
{
.tileTag = 0xABE1,
.paletteTag = 0xABE0,
.oam = &gOamData_8587B90,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
const struct CompressedSpriteSheet gUnknown_08587BB0 =
{
.data = gContestApplauseGfx,
.size = 0x400,
.tag = 0xABE2
};
const struct SpritePalette gUnknown_08587BB8 =
{
.data = gContestPal,
.tag = 0xABE2
};
const struct OamData gOamData_8587BC0 =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(64x32),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(64x32),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
.affineParam = 0
};
const struct SpriteTemplate gSpriteTemplate_8587BC8 =
{
.tileTag = 0xABE2,
.paletteTag = 0xABE2,
.oam = &gOamData_8587BC0,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
const struct OamData gOamData_8587BE0 =
{
.y = 0,
.affineMode = 0,
.objMode = 0,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 3,
.paletteNum = 2,
.affineParam = 0
};
const struct SpriteTemplate gSpriteTemplate_8587BE8 =
{
.tileTag = 0x4E21,
.paletteTag = 0x4E21,
.oam = &gOamData_8587BE0,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
const struct CompressedSpriteSheet gUnknown_08587C00 =
{
.data = gContestJudgeGfx,
.size = 0x800,
.tag = 0x4E21
};
const struct CompressedSpriteSheet gUnknown_08587C08 =
{
.data = gContestJudgeSymbolsGfx,
.size = 0x380,
.tag = 0xABE0
};
const struct CompressedSpritePalette gUnknown_08587C10 =
{
.data = gContest3Pal,
.tag = 0xABE0
};
const struct SpriteTemplate gSpriteTemplate_8587C18 =
{
.tileTag = 0xABE0,
.paletteTag = 0xABE0,
.oam = &gUnknown_0852490C,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
};
const u16 gUnknown_08587C30[] = INCBIN_U16("graphics/unknown/unknown_587C30.gbapal");
#include "data/contest_text_tables.h"
const struct BgTemplate gUnknown_08587F34[] =
{
{
.bg = 0,
.charBaseIndex = 0,
.mapBaseIndex = 0x18,
.screenSize = 2,
.paletteMode = 0,
.priority = 0,
.baseTile = 0
},
{
.bg = 1,
.charBaseIndex = 2,
.mapBaseIndex = 0x1E,
.screenSize = 2,
.paletteMode = 0,
.priority = 1,
.baseTile = 0
},
{
.bg = 2,
.charBaseIndex = 0,
.mapBaseIndex = 0x1C,
.screenSize = 2,
.paletteMode = 0,
.priority = 0,
.baseTile = 0
},
{
.bg = 3,
.charBaseIndex = 0,
.mapBaseIndex = 0x1A,
.screenSize = 0,
.paletteMode = 0,
.priority = 3,
.baseTile = 0
}
};
const struct WindowTemplate gUnknown_08587F44[] =
{
{
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 0,
.width = 12,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x200
},
{
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 5,
.width = 12,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x218
},
{
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 10,
.width = 12,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x230
},
{
.bg = 0,
.tilemapLeft = 18,
.tilemapTop = 15,
.width = 12,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x248
},
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 15,
.width = 17,
.height = 4,
.paletteNum = 0xF,
.baseBlock = 0x260
},
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 0x1F,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2A4
},
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 0x21,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2B6
},
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 0x23,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2C8
},
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 0x25,
.width = 9,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2DA
},
{
.bg = 0,
.tilemapLeft = 16,
.tilemapTop = 0x1F,
.width = 1,
.height = 2,
.paletteNum = 0xF,
.baseBlock = 0x2EC
},
{
.bg = 0,
.tilemapLeft = 11,
.tilemapTop = 0x23,
.width = 18,
.height = 4,
.paletteNum = 0xF,
.baseBlock = 0x2EE
},
DUMMY_WIN_TEMPLATE
};
#include "data/contest_opponents.h"
static const struct CompressedSpriteSheet sUnknown_08589904[] =
{
{
.data = gBlankGfxCompressed,
.size = 0x1000,
.tag = 0x80E8
},
{
.data = gBlankGfxCompressed,
.size = 0x1000,
.tag = 0x80E9
},
{
.data = gBlankGfxCompressed,
.size = 0x1000,
.tag = 0x80EA
},
{
.data = gBlankGfxCompressed,
.size = 0x1000,
.tag = 0x80EB
}
};
// Yup this is super dangerous but that's how it is here
static const struct SpritePalette sUnknown_08589924[] =
{
{
.data = (u16*)(gHeap + 0x1A0A4),
.tag = 0x80E8
},
{
.data = (u16*)(gHeap + 0x1A0C4),
.tag = 0x80E9
},
{
.data = (u16*)(gHeap + 0x1A0E4),
.tag = 0x80EA
},
{
.data = (u16*)(gHeap + 0x1A104),
.tag = 0x80EB
}
};
const struct OamData gOamData_8589944 =
{
.y = 0,
.affineMode = 3,
.objMode = 1,
.mosaic = 0,
.bpp = 0,
.shape = SPRITE_SHAPE(64x64),
.x = 0,
.matrixNum = 0,
.size = SPRITE_SIZE(64x64),
.tileNum = 0,
.priority = 0,
.paletteNum = 0,
.affineParam = 0
};
const union AffineAnimCmd gSpriteAffineAnim_858994C[] =
{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_END
};
const union AffineAnimCmd gSpriteAffineAnim_858995C[] =
{
AFFINEANIMCMD_FRAME(3, 3, 0, 15),
AFFINEANIMCMD_FRAME(-3, -3, 0, 15),
AFFINEANIMCMD_FRAME(3, 3, 0, 15),
AFFINEANIMCMD_FRAME(-3, -3, 0, 15),
AFFINEANIMCMD_END
};
const union AffineAnimCmd *const gSpriteAffineAnimTable_8589984[] =
{
gSpriteAffineAnim_858994C,
gSpriteAffineAnim_858995C
};
const struct SpriteTemplate gSpriteTemplate_858998C[] =
{
{
.tileTag = 0x80E8,
.paletteTag = 0x80E8,
.oam = &gOamData_8589944,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_8589984,
.callback = SpriteCallbackDummy
},
{
.tileTag = 0x80E9,
.paletteTag = 0x80E9,
.oam = &gOamData_8589944,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_8589984,
.callback = SpriteCallbackDummy
},
{
.tileTag = 0x80EA,
.paletteTag = 0x80EA,
.oam = &gOamData_8589944,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_8589984,
.callback = SpriteCallbackDummy
},
{
.tileTag = 0x80EB,
.paletteTag = 0x80EB,
.oam = &gOamData_8589944,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gSpriteAffineAnimTable_8589984,
.callback = SpriteCallbackDummy
}
};
const s8 gContestExcitementTable[][5] =
{
{ 1, 0, -1, -1, 0},
{ 0, 1, 0, -1, -1},
{-1, 0, 1, 0, -1},
{-1, -1, 0, 1, 0},
{ 0, -1, -1, 0, 1}
};
static void TaskDummy1(u8 taskId)
{
@ -2118,7 +2694,7 @@ void sub_80DAB8C(u8 contestType, u8 rank)
r7 = TRUE;
// Find all suitable opponents
r3 = gUnknown_085898A4;
r3 = gPostgameContestOpponentFilter;
for (i = 0; i < ARRAY_COUNT(gContestOpponents); i++)
{
if (rank == gContestOpponents[i].whichRank)
@ -2178,12 +2754,12 @@ void sub_80DACBC(u8 contestType, u8 rank, bool32 isPostgame)
if (isPostgame == TRUE)
{
if (gUnknown_085898A4[i] == 1)
if (gPostgameContestOpponentFilter[i] == CONTEST_FILTER_NO_POSTGAME)
continue;
}
else
{
if (gUnknown_085898A4[i] == 2)
if (gPostgameContestOpponentFilter[i] == CONTEST_FILTER_ONLY_POSTGAME)
continue;
}
if ((contestType == CONTEST_CATEGORY_COOL && gContestOpponents[i].aiPool_Cool)
@ -3317,8 +3893,8 @@ static u8 sub_80DC9EC(u8 a)
u8 spriteId1, spriteId2;
u8 x = gUnknown_02039F26[a] * 40 + 32;
LoadCompressedSpriteSheet(&gUnknown_08589904[a]);
LoadSpritePalette(&gUnknown_08589924[a]);
LoadCompressedSpriteSheet(&sUnknown_08589904[a]);
LoadSpritePalette(&sUnknown_08589924[a]);
spriteId1 = CreateSprite(&gSpriteTemplate_858998C[a], 184, x, 29);
spriteId2 = CreateSprite(&gSpriteTemplate_858998C[a], 248, x, 29);
gSprites[spriteId2].oam.tileNum += 64;

View File

@ -778,7 +778,7 @@ static void sub_80F677C(u8 taskId)
if (!gReceivedRemoteLinkPlayers)
{
if (gIsLinkContest & 0x2)
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
sub_80F7144();
gTasks[taskId].func = sub_80F67C4;

3066
src/data/contest_opponents.h Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,414 @@
#include "global.h"
extern const u8 gContestEffect00hDescription[];
extern const u8 gContestEffect01hDescription[];
extern const u8 gContestEffect02hDescription[];
extern const u8 gContestEffect03hDescription[];
extern const u8 gContestEffect04hDescription[];
extern const u8 gContestEffect05hDescription[];
extern const u8 gContestEffect06hDescription[];
extern const u8 gContestEffect07hDescription[];
extern const u8 gContestEffect08hDescription[];
extern const u8 gContestEffect09hDescription[];
extern const u8 gContestEffect0AhDescription[];
extern const u8 gContestEffect0BhDescription[];
extern const u8 gContestEffect0ChDescription[];
extern const u8 gContestEffect0DhDescription[];
extern const u8 gContestEffect0EhDescription[];
extern const u8 gContestEffect0FhDescription[];
extern const u8 gContestEffect10hDescription[];
extern const u8 gContestEffect11hDescription[];
extern const u8 gContestEffect12hDescription[];
extern const u8 gContestEffect13hDescription[];
extern const u8 gContestEffect14hDescription[];
extern const u8 gContestEffect15hDescription[];
extern const u8 gContestEffect16hDescription[];
extern const u8 gContestEffect17hDescription[];
extern const u8 gContestEffect18hDescription[];
extern const u8 gContestEffect19hDescription[];
extern const u8 gContestEffect1AhDescription[];
extern const u8 gContestEffect1BhDescription[];
extern const u8 gContestEffect1ChDescription[];
extern const u8 gContestEffect1DhDescription[];
extern const u8 gContestEffect1EhDescription[];
extern const u8 gContestEffect1FhDescription[];
extern const u8 gContestEffect20hDescription[];
extern const u8 gContestEffect21hDescription[];
extern const u8 gContestEffect22hDescription[];
extern const u8 gContestEffect23hDescription[];
extern const u8 gContestEffect24hDescription[];
extern const u8 gContestEffect25hDescription[];
extern const u8 gContestEffect26hDescription[];
extern const u8 gContestEffect27hDescription[];
extern const u8 gContestEffect28hDescription[];
extern const u8 gContestEffect29hDescription[];
extern const u8 gContestEffect2AhDescription[];
extern const u8 gContestEffect2BhDescription[];
extern const u8 gContestEffect2ChDescription[];
extern const u8 gContestEffect2DhDescription[];
extern const u8 gContestEffect2EhDescription[];
extern const u8 gContestEffect2FhDescription[];
extern const u8 gUnusedContestMoveName0[];
extern const u8 gUnusedContestMoveName1[];
extern const u8 gUnusedContestMoveName2[];
extern const u8 gUnusedContestMoveName3[];
extern const u8 gUnusedContestMoveName4[];
extern const u8 gUnusedContestMoveName5[];
extern const u8 gUnusedContestMoveName6[];
extern const u8 gUnusedContestMoveName7[];
extern const u8 gUnusedContestMoveName8[];
extern const u8 gUnusedContestMoveName9[];
extern const u8 gUnusedContestMoveName10[];
extern const u8 gUnusedContestMoveName11[];
extern const u8 gUnusedContestMoveName12[];
extern const u8 gContestMoveTypeCoolText[];
extern const u8 gContestMoveTypeBeautyText[];
extern const u8 gContestMoveTypeCuteText[];
extern const u8 gContestMoveTypeSmartText[];
extern const u8 gContestMoveTypeToughText[];
extern const u8 gText_0827D5C1[];
extern const u8 gText_0827D5DC[];
extern const u8 gText_0827D600[];
extern const u8 gText_0827D612[];
extern const u8 gText_0827D612[];
extern const u8 gText_0827D62D[];
extern const u8 gText_0827D654[];
extern const u8 gText_0827D67E[];
extern const u8 gText_0827D69C[];
extern const u8 gText_0827D6BA[];
extern const u8 gText_0827D6E5[];
extern const u8 gText_0827D706[];
extern const u8 gText_0827D71D[];
extern const u8 gText_0827D743[];
extern const u8 gText_0827D764[];
extern const u8 gText_0827D785[];
extern const u8 gText_0827D7A5[];
extern const u8 gText_0827D7C8[];
extern const u8 gText_0827D7E8[];
extern const u8 gText_0827D831[];
extern const u8 gText_0827D855[];
extern const u8 gText_0827D830[];
extern const u8 gText_0827D872[];
extern const u8 gText_0827D88F[];
extern const u8 gText_0827D8B5[];
extern const u8 gText_0827D8E4[];
extern const u8 gText_0827D8FE[];
extern const u8 gText_0827D926[];
extern const u8 gText_0827D947[];
extern const u8 gText_0827D961[];
extern const u8 gText_0827D986[];
extern const u8 gText_0827D9B1[];
extern const u8 gText_0827D9D9[];
extern const u8 gText_0827DA03[];
extern const u8 gText_0827DA31[];
extern const u8 gText_0827DA5B[];
extern const u8 gText_0827DA85[];
extern const u8 gText_0827DAB2[];
extern const u8 gText_0827DADA[];
extern const u8 gText_0827DB03[];
extern const u8 gText_0827D830[];
extern const u8 gText_0827D830[];
extern const u8 gText_0827D830[];
extern const u8 gText_0827DB1F[];
extern const u8 gText_0827DB4E[];
extern const u8 gText_827DB75[];
extern const u8 gText_827DBB0[];
extern const u8 gText_827DBE0[];
extern const u8 gText_827DC0F[];
extern const u8 gText_827DC45[];
extern const u8 gText_827DC7C[];
extern const u8 gText_827DCB4[];
extern const u8 gText_827DCE7[];
extern const u8 gText_827DD12[];
extern const u8 gText_827DD3D[];
extern const u8 gText_827DD6F[];
extern const u8 gText_827DD8E[];
extern const u8 gText_827DDC7[];
extern const u8 gText_827DDF2[];
extern const u8 gText_827DE14[];
extern const u8 gText_827DE44[];
extern const u8 gText_827DE73[];
extern const u8 gText_827DEA5[];
extern const u8 gText_827DED9[];
extern const u8 gText_827DF02[];
extern const u8 gText_827DF3A[];
extern const u8 gText_827DF63[];
extern const u8 gText_827DF8C[];
extern const u8 gText_827DFB8[];
extern const u8 gText_827DFE2[];
extern const u8 gText_827E00C[];
extern const u8 gText_827E02F[];
extern const u8 gText_827E05F[];
extern const u8 gText_827E08B[];
extern const u8 gText_827E0B5[];
extern const u8 gText_827E0DD[];
extern const u8 gText_827E107[];
extern const u8 gText_827E143[];
extern const u8 gText_827E17F[];
extern const u8 gText_827E1BB[];
extern const u8 gText_827E1F3[];
extern const u8 gText_827E220[];
extern const u8 gText_827E254[];
extern const u8 gText_827E289[];
extern const u8 gText_827E2C5[];
extern const u8 gText_0827E2FE[];
extern const u8 gText_0827E32E[];
extern const u8 gText_0827E35B[];
extern const u8 gText_0827E38D[];
extern const u8 gText_0827E3C1[];
extern const u8 gText_0827E3EB[];
extern const u8 gText_0827E416[];
extern const u8 gText_0827E448[];
extern const u8 gText_0827E473[];
extern const u8 gText_0827E4A6[];
extern const u8 gText_0827E4D5[];
extern const u8 gText_0827E504[];
extern const u8 gText_0827E531[];
extern const u8 gText_0827E55A[];
extern const u8 gText_0827E5B2[];
extern const u8 gText_0827E5D0[];
extern const u8 gText_0827E606[];
extern const u8 gText_0827E638[];
extern const u8 gText_0827E658[];
extern const u8 gText_0827E68B[];
extern const u8 gText_0827E6C4[];
extern const u8 gText_0827E7BA[];
extern const u8 gText_0827E85F[];
extern const u8 gText_0827E868[];
extern const u8 gText_0827E86F[];
extern const u8 gText_0827E878[];
extern const u8 gText_0827E882[];
extern const u8 gText_0827E894[];
extern const u8 gText_0827E89E[];
extern const u8 gText_0827E8AA[];
extern const u8 gText_0827E8B4[];
extern const u8 gText_0827E8BF[];
extern const u8 gText_0827E8CA[];
const u8 *const gContestEffectDescriptionPointers[] =
{
gContestEffect00hDescription,
gContestEffect01hDescription,
gContestEffect02hDescription,
gContestEffect03hDescription,
gContestEffect04hDescription,
gContestEffect05hDescription,
gContestEffect06hDescription,
gContestEffect07hDescription,
gContestEffect08hDescription,
gContestEffect09hDescription,
gContestEffect0AhDescription,
gContestEffect0BhDescription,
gContestEffect0ChDescription,
gContestEffect0DhDescription,
gContestEffect0EhDescription,
gContestEffect0FhDescription,
gContestEffect10hDescription,
gContestEffect11hDescription,
gContestEffect12hDescription,
gContestEffect13hDescription,
gContestEffect14hDescription,
gContestEffect15hDescription,
gContestEffect16hDescription,
gContestEffect17hDescription,
gContestEffect18hDescription,
gContestEffect19hDescription,
gContestEffect1AhDescription,
gContestEffect1BhDescription,
gContestEffect1ChDescription,
gContestEffect1DhDescription,
gContestEffect1EhDescription,
gContestEffect1FhDescription,
gContestEffect20hDescription,
gContestEffect21hDescription,
gContestEffect22hDescription,
gContestEffect23hDescription,
gContestEffect24hDescription,
gContestEffect25hDescription,
gContestEffect26hDescription,
gContestEffect27hDescription,
gContestEffect28hDescription,
gContestEffect29hDescription,
gContestEffect2AhDescription,
gContestEffect2BhDescription,
gContestEffect2ChDescription,
gContestEffect2DhDescription,
gContestEffect2EhDescription,
gContestEffect2FhDescription
};
// Unreferenced array of pointers to move names.
// All of the moves except Conversion are combo starters, so this may have
// been an early list of combo starters.
const u8 *const gUnknown_8587D10[] =
{
gUnusedContestMoveName0,
gUnusedContestMoveName0,
gUnusedContestMoveName1,
gUnusedContestMoveName2,
gUnusedContestMoveName3,
gUnusedContestMoveName4,
gUnusedContestMoveName5,
gUnusedContestMoveName6,
gUnusedContestMoveName7,
gUnusedContestMoveName8,
gUnusedContestMoveName9,
gUnusedContestMoveName10,
gUnusedContestMoveName11,
gUnusedContestMoveName12
};
const u8 *const gContestMoveTypeTextPointers[] =
{
gContestMoveTypeCoolText,
gContestMoveTypeBeautyText,
gContestMoveTypeCuteText,
gContestMoveTypeSmartText,
gContestMoveTypeToughText
};
const u8 *const gUnknown_08587D5C[] =
{
gText_0827D5C1,
gText_0827D5DC,
gText_0827D600,
gText_0827D612,
gText_0827D612,
gText_0827D62D,
gText_0827D654,
gText_0827D67E,
gText_0827D69C,
gText_0827D6BA,
gText_0827D6E5,
gText_0827D706,
gText_0827D71D
};
const u8 *const gUnknown_08587D90[] =
{
gText_0827D743,
gText_0827D764,
gText_0827D785,
gText_0827D7A5,
gText_0827D7C8,
gText_0827D7E8,
gText_0827D831,
gText_0827D855,
gText_0827D830,
gText_0827D872,
gText_0827D88F,
gText_0827D8B5,
gText_0827D8E4,
gText_0827D8FE,
gText_0827D926,
gText_0827D947,
gText_0827D961,
gText_0827D986,
gText_0827D9B1,
gText_0827D9D9,
gText_0827DA03,
gText_0827DA31,
gText_0827DA5B,
gText_0827DA85,
gText_0827DAB2,
gText_0827DADA,
gText_0827DB03,
gText_0827D830,
gText_0827D830,
gText_0827D830,
gText_0827DB1F,
gText_0827DB4E
};
const u8 *const gUnknown_08587E10[] =
{
gText_827DB75,
gText_827DBB0,
gText_827DBE0,
gText_827DC0F,
gText_827DC45,
gText_827DC7C,
gText_827DCB4,
gText_827DCE7,
gText_827DD12,
gText_827DD3D,
gText_827DD6F,
gText_827DD8E,
gText_827DDC7,
gText_827DDF2,
gText_827DE14,
gText_827DE44,
gText_827DE73,
gText_827DEA5,
gText_827DED9,
gText_827DF02,
gText_827DF3A,
gText_827DF63,
gText_827DF8C,
gText_827DFB8,
gText_827DFE2,
gText_827E00C,
gText_827E02F,
gText_827E05F,
gText_827E08B,
gText_827E0B5,
gText_827E0DD,
gText_827E107,
gText_827E143,
gText_827E17F,
gText_827E1BB,
gText_827E1F3,
gText_827E220,
gText_827E254,
gText_827E289,
gText_827E2C5,
gText_0827E2FE,
gText_0827E32E,
gText_0827E35B,
gText_0827E38D,
gText_0827E3C1,
gText_0827E3EB,
gText_0827E416,
gText_0827E448,
gText_0827E473,
gText_0827E4A6,
gText_0827E4D5,
gText_0827E504,
gText_0827E531,
gText_0827E55A,
gText_0827E5B2,
gText_0827E5D0,
gText_0827E606,
gText_0827E638,
gText_0827E658,
gText_0827E68B,
gText_0827E6C4,
gText_0827E7BA
};
const u8 *const gUnknown_08587F08[] =
{
gText_0827E85F,
gText_0827E868,
gText_0827E86F,
gText_0827E878,
gText_0827E882
};
const u8 *const gUnknown_08587F1C[] =
{
gText_0827E894,
gText_0827E89E,
gText_0827E8AA,
gText_0827E8B4,
gText_0827E8BF,
gText_0827E8CA
};

View File

@ -3721,7 +3721,7 @@ static void sub_811D0BC(void)
{
FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17);
LoadUserWindowBorderGfx(1, 1, 0xE0);
sub_8098858(1, 1, 14);
DrawTextBorderOuter(1, 1, 14);
sub_811D104(0);
PutWindowTilemap(1);
CopyBgTilemapBufferToVram(0);

View File

@ -4,7 +4,7 @@
#include "ereader_helpers.h"
#include "link.h"
#include "main.h"
#include "union_room.h"
#include "mystery_gift.h"
#include "save.h"
#include "sound.h"
#include "sprite.h"
@ -209,7 +209,7 @@ static u32 sub_81D4EE4(u8 *arg0, u16 *arg1)
return 0;
}
void sub_81D5014(void)
void task_add_00_ereader(void)
{
int value;
struct Unk81D5014 *data;
@ -251,7 +251,7 @@ static void sub_81D5084(u8 taskId)
switch (data->unk8)
{
case 0:
if (mevent_0814257C(&data->unk9, gUnknown_085EDFD6))
if (MG_PrintTextOnWindow1AndWaitButton(&data->unk9, gUnknown_085EDFD6))
data->unk8 = 1;
break;
case 1:
@ -275,9 +275,9 @@ static void sub_81D5084(u8 taskId)
}
break;
case 4:
if (mevent_0814257C(&data->unk9, gUnknown_085EDFF5))
if (MG_PrintTextOnWindow1AndWaitButton(&data->unk9, gUnknown_085EDFF5))
{
sub_8018884(gUnknown_085EE014);
AddTextPrinterToWindow1(gUnknown_085EE014);
sub_81D505C(&data->unk0);
data->unk8 = 5;
}
@ -324,11 +324,11 @@ static void sub_81D5084(u8 taskId)
}
break;
case 7:
if (mevent_0814257C(&data->unk9, gUnknown_085EE05C))
if (MG_PrintTextOnWindow1AndWaitButton(&data->unk9, gUnknown_085EE05C))
data->unk8 = 4;
break;
case 8:
sub_8018884(gUnknown_085EE097);
AddTextPrinterToWindow1(gUnknown_085EE097);
// XXX: This (u32*) cast is discarding the const qualifier from gUnknown_089A3470
sub_81D4D50(&gUnknown_03006370, gMultiBootProgram_BerryGlitchFix_Start - gUnknown_089A3470, (u32*)gUnknown_089A3470);
data->unk8 = 9;
@ -347,7 +347,7 @@ static void sub_81D5084(u8 taskId)
else if (data->unkE == 1)
{
sub_81D505C(&data->unk0);
sub_8018884(gUnknown_085EE120);
AddTextPrinterToWindow1(gUnknown_085EE120);
data->unk8 = 11;
}
else
@ -361,7 +361,7 @@ static void sub_81D5084(u8 taskId)
break;
case 12:
sub_81D4E30();
sub_8018884(gUnknown_085EE0DC);
AddTextPrinterToWindow1(gUnknown_085EE0DC);
data->unk8 = 13;
break;
case 13:
@ -370,7 +370,7 @@ static void sub_81D5084(u8 taskId)
case 0:
break;
case 2:
sub_8018884(gUnknown_085EE097);
AddTextPrinterToWindow1(gUnknown_085EE097);
data->unk8 = 14;
break;
case 1:
@ -418,7 +418,7 @@ static void sub_81D5084(u8 taskId)
case 17:
if (sub_81D3AB0((struct Unk81D38FC *)&gDecompressionBuffer))
{
sub_8018884(gUnknown_085EE0FA);
AddTextPrinterToWindow1(gUnknown_085EE0FA);
sub_81D505C(&data->unk0);
data->unk8 = 18;
}
@ -430,7 +430,7 @@ static void sub_81D5084(u8 taskId)
case 18:
if (sub_81D5064(&data->unk0, 120))
{
sub_8018884(gUnknown_085EE107);
AddTextPrinterToWindow1(gUnknown_085EE107);
PlayFanfare(MUS_FANFA4);
data->unk8 = 19;
}
@ -440,25 +440,25 @@ static void sub_81D5084(u8 taskId)
data->unk8 = 26;
break;
case 23:
if (mevent_0814257C(&data->unk9,gUnknown_085EE06B))
if (MG_PrintTextOnWindow1AndWaitButton(&data->unk9,gUnknown_085EE06B))
data->unk8 = 26;
break;
case 20:
if (mevent_0814257C(&data->unk9, gUnknown_085EE0A3))
if (MG_PrintTextOnWindow1AndWaitButton(&data->unk9, gUnknown_085EE0A3))
data->unk8 = 0;
break;
case 21:
if (mevent_0814257C(&data->unk9, gUnknown_085EE0BF))
if (MG_PrintTextOnWindow1AndWaitButton(&data->unk9, gUnknown_085EE0BF))
data->unk8 = 0;
break;
case 22:
if (mevent_0814257C(&data->unk9, gUnknown_085EE12D))
if (MG_PrintTextOnWindow1AndWaitButton(&data->unk9, gUnknown_085EE12D))
data->unk8 = 0;
break;
case 26:
Free(data->unk10);
DestroyTask(taskId);
SetMainCallback2(sub_80186A4);
SetMainCallback2(MainCB_FreeAllBuffersAndReturnToInitTitleScreen);
break;
}
}

View File

@ -1228,7 +1228,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (!gPaletteFade.active)
{
if (gWirelessCommType)
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
Free(GetBgTilemapBuffer(3));
Free(GetBgTilemapBuffer(1));

View File

@ -23,7 +23,7 @@
#include "constants/songs.h"
#include "constants/vars.h"
extern struct MapPosition gPlayerFacingPosition;
EWRAM_DATA struct MapPosition gPlayerFacingPosition = {0};
static void sub_80F9C90(u8);
static void sub_80F9DFC(u8);

View File

@ -27,9 +27,6 @@ static void sub_813561C(u8 taskId);
static void sub_81356C4(void);
static void sub_8135714(void);
// extern RAM loc
extern struct MapPosition gPlayerFacingPosition;
// text
bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId)
{

View File

@ -62,7 +62,7 @@ int sub_81DB3D8(const struct MenuAction *str, const u8* arg1, int arg2)
return convert_pixel_width_to_tile_width(var);
}
int sub_81DB41C(const struct ListMenuTemplate *listMenu)
int Intl_GetListMenuWidth(const struct ListMenuTemplate *listMenu)
{
int i, maxWidth, finalWidth;
const struct ListMenuItem *items = listMenu->items;

View File

@ -2243,7 +2243,7 @@ void CreateWirelessStatusIndicatorSprite(u8 x, u8 y)
}
}
void sub_800E084(void)
void DestroyWirelessStatusIndicatorSprite(void)
{
if (gSprites[gWirelessStatusIndicatorSpriteId].data[7] == 0x1234)
{
@ -2356,7 +2356,7 @@ void sub_800E174(void)
CpuCopy16(gMain.oamBuffer + 125, (struct OamData *)OAM + 125, sizeof(struct OamData));
if (sub_8011A74() == 1)
{
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
}
}
}
@ -4209,7 +4209,7 @@ void sub_8010DB4(void)
{
if (gUnknown_03005000.unk_ee == 1 && gUnknown_03004140.unk_02 == 0)
{
if (gMain.callback2 == sub_8018438 || gUnknown_03004140.unk_3c->unk_04)
if (gMain.callback2 == c2_mystery_gift_e_reader_run || gUnknown_03004140.unk_3c->unk_04)
gWirelessCommType = 2;
SetMainCallback2(CB2_LinkError);
gMain.savedCallback = CB2_LinkError;

View File

@ -324,7 +324,7 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str
case 2:
LoadUserWindowBorderGfx(sMysteryGiftLinkMenu.windowId, tileNum, palNum);
case 1:
sub_8098858(sMysteryGiftLinkMenu.windowId, tileNum, palNum / 16);
DrawTextBorderOuter(sMysteryGiftLinkMenu.windowId, tileNum, palNum / 16);
break;
}
gMultiuseListMenuTemplate = *listMenuTemplate;

View File

@ -38,6 +38,7 @@
#include "text_window.h"
#include "title_screen.h"
#include "window.h"
#include "mystery_gift.h"
/*
* Main menu state machine
@ -1083,7 +1084,7 @@ static void Task_HandleMainMenuAPressed(u8 taskId)
DestroyTask(taskId);
break;
case ACTION_EREADER:
SetMainCallback2(sub_801867C);
SetMainCallback2(c2_ereader);
DestroyTask(taskId);
break;
case ACTION_INVALID:

View File

@ -914,7 +914,7 @@ struct Story
};
static const struct Story sStorytellerStories[] = {
{GAME_STAT_50, 1, MauvilleCity_PokemonCenter_1F_Text_28E930, MauvilleCity_PokemonCenter_1F_Text_28E947, MauvilleCity_PokemonCenter_1F_Text_28E956},
{GAME_STAT_NUM_UNION_ROOM_BATTLES, 1, MauvilleCity_PokemonCenter_1F_Text_28E930, MauvilleCity_PokemonCenter_1F_Text_28E947, MauvilleCity_PokemonCenter_1F_Text_28E956},
{GAME_STAT_STARTED_TRENDS, 1, MauvilleCity_PokemonCenter_1F_Text_28E9D7, MauvilleCity_PokemonCenter_1F_Text_28E9EF, MauvilleCity_PokemonCenter_1F_Text_28E9FE},
{GAME_STAT_PLANTED_BERRIES, 1, MauvilleCity_PokemonCenter_1F_Text_28EA7D, MauvilleCity_PokemonCenter_1F_Text_28EA98, MauvilleCity_PokemonCenter_1F_Text_28EAA8},
{GAME_STAT_TRADED_BIKES, 1, MauvilleCity_PokemonCenter_1F_Text_28EB19, MauvilleCity_PokemonCenter_1F_Text_28EB31, MauvilleCity_PokemonCenter_1F_Text_28EB3E},

View File

@ -432,7 +432,7 @@ void sub_819789C(void)
LoadPalette(gUnknown_0860F074, STD_WINDOW_PALETTE_NUM * 0x10, 0x14);
}
void sub_81978B0(u16 offset)
void Menu_LoadStdPalAt(u16 offset)
{
LoadPalette(gUnknown_0860F074, offset, 0x14);
}

View File

@ -14,7 +14,7 @@
static EWRAM_DATA bool32 gUnknown_02022C70 = FALSE;
static void sub_801B180(void);
static void sub_801B14C(void);
static void s_DestroyWonderNews(void);
static bool32 sub_801B114(const struct MEventBuffer_3120_Sub *data);
static bool32 sub_801B2CC(const struct MEventBuffer_32E0_Sub *data);
static void sub_801B330(void);
@ -29,7 +29,7 @@ void sub_801AFD8(void)
sub_811F8BC();
}
struct MEventBuffer_3120_Sub *sub_801B00C(void)
struct MEventBuffer_3120_Sub *sav1_get_mevent_buffer_0(void)
{
return &gSaveBlock1Ptr->unk_322C.buffer_000.data;
}
@ -54,9 +54,9 @@ u16 *sub_801B058(void)
return gSaveBlock1Ptr->unk_322C.unk_338;
}
void sub_801B06C(void)
void DestroyWonderNews(void)
{
sub_801B14C();
s_DestroyWonderNews();
}
bool32 sub_801B078(const struct MEventBuffer_3120_Sub *src)
@ -64,13 +64,13 @@ bool32 sub_801B078(const struct MEventBuffer_3120_Sub *src)
if (!sub_801B114(src))
return FALSE;
sub_801B14C();
s_DestroyWonderNews();
gSaveBlock1Ptr->unk_322C.buffer_000.data = *src;
gSaveBlock1Ptr->unk_322C.buffer_000.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub));
return TRUE;
}
bool32 sub_801B0CC(void)
bool32 ValidateReceivedWonderNews(void)
{
if (CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_000.data, sizeof(struct MEventBuffer_3120_Sub)) != gSaveBlock1Ptr->unk_322C.buffer_000.crc)
return FALSE;
@ -88,7 +88,7 @@ static bool32 sub_801B114(const struct MEventBuffer_3120_Sub *data)
return TRUE;
}
bool32 sub_801B128(void)
bool32 WonderNews_Test_Unk_02(void)
{
const struct MEventBuffer_3120_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_000.data;
if (data->unk_02 == 0)
@ -97,9 +97,9 @@ bool32 sub_801B128(void)
return TRUE;
}
static void sub_801B14C(void)
static void s_DestroyWonderNews(void)
{
CpuFill32(0, sub_801B00C(), sizeof(gSaveBlock1Ptr->unk_322C.buffer_000.data));
CpuFill32(0, sav1_get_mevent_buffer_0(), sizeof(gSaveBlock1Ptr->unk_322C.buffer_000.data));
gSaveBlock1Ptr->unk_322C.buffer_000.crc = 0;
}
@ -113,7 +113,7 @@ bool32 sub_801B1A4(const u8 *src)
{
const u8 *r5 = (const u8 *)&gSaveBlock1Ptr->unk_322C.buffer_000.data;
u32 i;
if (!sub_801B0CC())
if (!ValidateReceivedWonderNews())
return FALSE;
for (i = 0; i < sizeof(struct MEventBuffer_3120_Sub); i++)
@ -125,7 +125,7 @@ bool32 sub_801B1A4(const u8 *src)
return TRUE;
}
void sub_801B1E8(void)
void DestroyWonderCard(void)
{
sub_801B330();
sub_801B368();
@ -143,7 +143,7 @@ bool32 sub_801B21C(const struct MEventBuffer_32E0_Sub *data)
if (!sub_801B2CC(data))
return FALSE;
sub_801B1E8();
DestroyWonderCard();
memcpy(&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, data, sizeof(struct MEventBuffer_32E0_Sub));
gSaveBlock1Ptr->unk_322C.buffer_1c0.crc = CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub));
r2 = &gSaveBlock1Ptr->unk_322C.buffer_310.data;
@ -152,7 +152,7 @@ bool32 sub_801B21C(const struct MEventBuffer_32E0_Sub *data)
return TRUE;
}
bool32 sub_801B27C(void)
bool32 ValidateReceivedWonderCard(void)
{
if (gSaveBlock1Ptr->unk_322C.buffer_1c0.crc != CalcCRC16WithTable((void *)&gSaveBlock1Ptr->unk_322C.buffer_1c0.data, sizeof(struct MEventBuffer_32E0_Sub)))
return FALSE;
@ -180,7 +180,7 @@ static bool32 sub_801B2CC(const struct MEventBuffer_32E0_Sub *data)
return TRUE;
}
bool32 sub_801B308(void)
bool32 WonderCard_Test_Unk_08_6(void)
{
const struct MEventBuffer_32E0_Sub *data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
if (data->unk_08_6 == 0)
@ -201,9 +201,9 @@ static void sub_801B368(void)
gSaveBlock1Ptr->unk_322C.buffer_310.crc = 0;
}
u16 sub_801B39C(void)
u16 GetWonderCardFlagID(void)
{
if (sub_801B27C())
if (ValidateReceivedWonderCard())
return gSaveBlock1Ptr->unk_322C.buffer_1c0.data.unk_00;
return 0;
@ -215,7 +215,7 @@ void sub_801B3C0(struct MEventBuffer_32E0_Sub *buffer)
buffer->unk_08_6 = 0;
}
static bool32 sub_801B3D8(u16 a0)
static bool32 IsWonderCardFlagIDInValidRange(u16 a0)
{
if (a0 >= 1000 && a0 < 1020)
return TRUE;
@ -247,10 +247,10 @@ static const u16 sMysteryGiftFlags[] =
FLAG_UNUSED_MYSTERY_GIFT_0x14D,
};
bool32 sub_801B3F8(void)
bool32 CheckReceivedGiftFromWonderCard(void)
{
u16 value = sub_801B39C();
if (!sub_801B3D8(value))
u16 value = GetWonderCardFlagID();
if (!IsWonderCardFlagIDInValidRange(value))
return FALSE;
if (FlagGet(sMysteryGiftFlags[value - 1000]) == TRUE)
@ -300,7 +300,7 @@ static bool32 sub_801B4A4(const u16 *data)
static int sub_801B4CC(void)
{
struct MEventBuffer_32E0_Sub *data;
if (!sub_801B27C())
if (!ValidateReceivedWonderCard())
return 0;
data = &gSaveBlock1Ptr->unk_322C.buffer_1c0.data;
@ -353,7 +353,7 @@ void sub_801B580(struct MEventStruct_Unk1442CC *data, bool32 a1)
data->unk_10 = 0x0200;
}
if (sub_801B27C())
if (ValidateReceivedWonderCard())
{
data->unk_14 = sav1_get_mevent_buffer_1()->unk_00;
data->unk_20 = *sav1_get_mevent_buffer_2();
@ -554,7 +554,7 @@ bool32 sub_801B94C(u16 a0)
if (a0 == 0)
return FALSE;
if (!sub_801B27C())
if (!ValidateReceivedWonderCard())
return FALSE;
if (gSaveBlock1Ptr->unk_322C.buffer_1c0.data.unk_00 != a0)

View File

@ -53,7 +53,7 @@ struct UnkStruct_203F3C8
/*045C*/ u8 buffer_045C[0x1000];
};
EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_02022C74 = NULL;
EWRAM_DATA struct UnkStruct_203F3C8 * sWonderCardData = NULL;
void sub_801BEF8(void);
void sub_801C178(u8 whichWindow);
@ -150,40 +150,40 @@ const struct UnkStruct_8467FB8 gUnknown_082F1D60[8] = {
{1, 0, 0, 7, gWonderCardBgGfx8, gWonderCardBgTilemap8, gWonderCardBgPal8}
};
bool32 sub_801BAAC(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
{
if (r5 == NULL || r6 == NULL)
return FALSE;
gUnknown_02022C74 = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
if (gUnknown_02022C74 == NULL)
sWonderCardData = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
if (sWonderCardData == NULL)
return FALSE;
gUnknown_02022C74->unk_0000 = *r5;
gUnknown_02022C74->unk_014C = *r6;
if (gUnknown_02022C74->unk_0000.unk_08_2 >= ARRAY_COUNT(gUnknown_082F1D60))
gUnknown_02022C74->unk_0000.unk_08_2 = 0;
if (gUnknown_02022C74->unk_0000.unk_08_0 >= ARRAY_COUNT(gUnknown_082F0E18))
gUnknown_02022C74->unk_0000.unk_08_0 = 0;
if (gUnknown_02022C74->unk_0000.unk_09 > ARRAY_COUNT(gUnknown_02022C74->unk_017D))
gUnknown_02022C74->unk_0000.unk_09 = 0;
gUnknown_02022C74->unk_0170 = &gUnknown_082F1D60[gUnknown_02022C74->unk_0000.unk_08_2];
sWonderCardData->unk_0000 = *r5;
sWonderCardData->unk_014C = *r6;
if (sWonderCardData->unk_0000.unk_08_2 >= ARRAY_COUNT(gUnknown_082F1D60))
sWonderCardData->unk_0000.unk_08_2 = 0;
if (sWonderCardData->unk_0000.unk_08_0 >= ARRAY_COUNT(gUnknown_082F0E18))
sWonderCardData->unk_0000.unk_08_0 = 0;
if (sWonderCardData->unk_0000.unk_09 > ARRAY_COUNT(sWonderCardData->unk_017D))
sWonderCardData->unk_0000.unk_09 = 0;
sWonderCardData->unk_0170 = &gUnknown_082F1D60[sWonderCardData->unk_0000.unk_08_2];
return TRUE;
}
void sub_801BB48(void)
void DestroyWonderCardResources(void)
{
if (gUnknown_02022C74 != NULL)
if (sWonderCardData != NULL)
{
*gUnknown_02022C74 = (struct UnkStruct_203F3C8){};
Free(gUnknown_02022C74);
gUnknown_02022C74 = NULL;
*sWonderCardData = (struct UnkStruct_203F3C8){};
Free(sWonderCardData);
sWonderCardData = NULL;
}
}
s32 sub_801BB74(void)
s32 FadeToWonderCardMenu(void)
{
if (gUnknown_02022C74 == NULL)
if (sWonderCardData == NULL)
return -1;
switch(gUnknown_02022C74->unk_0174)
switch(sWonderCardData->unk_0174)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@ -199,19 +199,19 @@ s32 sub_801BB74(void)
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
decompress_and_copy_tile_data_to_vram(2, gUnknown_02022C74->unk_0170->tiles, 0, 0x008, 0);
gUnknown_02022C74->unk_0176[0] = AddWindow(&gUnknown_082F0E1C[0]);
gUnknown_02022C74->unk_0176[1] = AddWindow(&gUnknown_082F0E1C[1]);
gUnknown_02022C74->unk_0176[2] = AddWindow(&gUnknown_082F0E1C[2]);
decompress_and_copy_tile_data_to_vram(2, sWonderCardData->unk_0170->tiles, 0, 0x008, 0);
sWonderCardData->unk_0176[0] = AddWindow(&gUnknown_082F0E1C[0]);
sWonderCardData->unk_0176[1] = AddWindow(&gUnknown_082F0E1C[1]);
sWonderCardData->unk_0176[2] = AddWindow(&gUnknown_082F0E1C[2]);
break;
case 3:
if (free_temp_tile_data_buffers_if_possible())
return 0;
LoadPalette(stdpal_get(1), 0x20, 0x20);
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_02022C74->unk_0170->pal, 0x10, 0x20);
LZ77UnCompWram(gUnknown_02022C74->unk_0170->map, gUnknown_02022C74->buffer_045C);
CopyRectToBgTilemapBufferRect(2, gUnknown_02022C74->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
LoadPalette(sWonderCardData->unk_0170->pal, 0x10, 0x20);
LZ77UnCompWram(sWonderCardData->unk_0170->map, sWonderCardData->buffer_045C);
CopyRectToBgTilemapBufferRect(2, sWonderCardData->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
CopyBgTilemapBufferToVram(2);
break;
case 4:
@ -237,18 +237,18 @@ s32 sub_801BB74(void)
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C74->unk_0174 = 0;
sWonderCardData->unk_0174 = 0;
return 1;
}
++gUnknown_02022C74->unk_0174;
++sWonderCardData->unk_0174;
return 0;
}
s32 sub_801BDA4(bool32 flag)
s32 FadeOutFromWonderCard(bool32 flag)
{
if (gUnknown_02022C74 == NULL)
if (sWonderCardData == NULL)
return -1;
switch (gUnknown_02022C74->unk_0174)
switch (sWonderCardData->unk_0174)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@ -268,26 +268,26 @@ s32 sub_801BDA4(bool32 flag)
case 3:
HideBg(1);
HideBg(2);
RemoveWindow(gUnknown_02022C74->unk_0176[2]);
RemoveWindow(gUnknown_02022C74->unk_0176[1]);
RemoveWindow(gUnknown_02022C74->unk_0176[0]);
RemoveWindow(sWonderCardData->unk_0176[2]);
RemoveWindow(sWonderCardData->unk_0176[1]);
RemoveWindow(sWonderCardData->unk_0176[0]);
break;
case 4:
sub_801C61C();
FreeMonIconPalettes();
break;
case 5:
sub_80186EC(gUnknown_02022C60, flag);
PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
CopyBgTilemapBufferToVram(0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
break;
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C74->unk_0174 = 0;
sWonderCardData->unk_0174 = 0;
return 1;
}
++gUnknown_02022C74->unk_0174;
++sWonderCardData->unk_0174;
return 0;
}
@ -297,59 +297,59 @@ void sub_801BEF8(void)
u16 r6;
u16 sp0[3] = {0, 0, 0};
memcpy(gUnknown_02022C74->unk_018B, gUnknown_02022C74->unk_0000.unk_0A, 40);
gUnknown_02022C74->unk_018B[40] = EOS;
memcpy(gUnknown_02022C74->unk_01B4, gUnknown_02022C74->unk_0000.unk_32, 40);
gUnknown_02022C74->unk_01B4[40] = EOS;
if (gUnknown_02022C74->unk_0000.unk_04 > 999999)
gUnknown_02022C74->unk_0000.unk_04 = 999999;
ConvertIntToDecimalStringN(gUnknown_02022C74->unk_01DD, gUnknown_02022C74->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
memcpy(sWonderCardData->unk_018B, sWonderCardData->unk_0000.unk_0A, 40);
sWonderCardData->unk_018B[40] = EOS;
memcpy(sWonderCardData->unk_01B4, sWonderCardData->unk_0000.unk_32, 40);
sWonderCardData->unk_01B4[40] = EOS;
if (sWonderCardData->unk_0000.unk_04 > 999999)
sWonderCardData->unk_0000.unk_04 = 999999;
ConvertIntToDecimalStringN(sWonderCardData->unk_01DD, sWonderCardData->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
for (i = 0; i < 4; i++)
{
memcpy(gUnknown_02022C74->unk_01E4[i], gUnknown_02022C74->unk_0000.unk_5A[i], 40);
gUnknown_02022C74->unk_01E4[i][40] = EOS;
memcpy(sWonderCardData->unk_01E4[i], sWonderCardData->unk_0000.unk_5A[i], 40);
sWonderCardData->unk_01E4[i][40] = EOS;
}
memcpy(gUnknown_02022C74->unk_0288, gUnknown_02022C74->unk_0000.unk_FA, 40);
gUnknown_02022C74->unk_0288[40] = EOS;
switch (gUnknown_02022C74->unk_0000.unk_08_0)
memcpy(sWonderCardData->unk_0288, sWonderCardData->unk_0000.unk_FA, 40);
sWonderCardData->unk_0288[40] = EOS;
switch (sWonderCardData->unk_0000.unk_08_0)
{
case 0:
memcpy(gUnknown_02022C74->unk_02B1, gUnknown_02022C74->unk_0000.unk_122, 40);
gUnknown_02022C74->unk_02B1[40] = EOS;
memcpy(sWonderCardData->unk_02B1, sWonderCardData->unk_0000.unk_122, 40);
sWonderCardData->unk_02B1[40] = EOS;
break;
case 1:
gUnknown_02022C74->unk_02B1[00] = EOS;
sWonderCardData->unk_02B1[00] = EOS;
break;
case 2:
gUnknown_02022C74->unk_02B1[00] = EOS;
sp0[0] = gUnknown_02022C74->unk_014C.unk_00 < 999 ? gUnknown_02022C74->unk_014C.unk_00 : 999;
sp0[1] = gUnknown_02022C74->unk_014C.unk_02 < 999 ? gUnknown_02022C74->unk_014C.unk_02 : 999;
sp0[2] = gUnknown_02022C74->unk_014C.unk_04 < 999 ? gUnknown_02022C74->unk_014C.unk_04 : 999;
sWonderCardData->unk_02B1[00] = EOS;
sp0[0] = sWonderCardData->unk_014C.unk_00 < 999 ? sWonderCardData->unk_014C.unk_00 : 999;
sp0[1] = sWonderCardData->unk_014C.unk_02 < 999 ? sWonderCardData->unk_014C.unk_02 : 999;
sp0[2] = sWonderCardData->unk_014C.unk_04 < 999 ? sWonderCardData->unk_014C.unk_04 : 999;
for (i = 0; i < 8; i++)
{
memset(gUnknown_02022C74->unk_02DC[i].unk_42, EOS, 4);
memset(gUnknown_02022C74->unk_02DC[i].unk_01, EOS, 41);
memset(sWonderCardData->unk_02DC[i].unk_42, EOS, 4);
memset(sWonderCardData->unk_02DC[i].unk_01, EOS, 41);
}
for (i = 0, r6 = 0; i < 40; i++)
{
if (gUnknown_02022C74->unk_0000.unk_122[i] != 0xF7)
if (sWonderCardData->unk_0000.unk_122[i] != 0xF7)
{
gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_01[r6] = gUnknown_02022C74->unk_0000.unk_122[i];
sWonderCardData->unk_02DC[sWonderCardData->unk_0175].unk_01[r6] = sWonderCardData->unk_0000.unk_122[i];
r6++;
}
else
{
u8 r3 = gUnknown_02022C74->unk_0000.unk_122[i + 1];
u8 r3 = sWonderCardData->unk_0000.unk_122[i + 1];
if (r3 > 2)
{
i += 2;
}
else
{
ConvertIntToDecimalStringN(gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_00 = gUnknown_02022C74->unk_0000.unk_122[i + 2];
gUnknown_02022C74->unk_0175++;
if (gUnknown_02022C74->unk_0175 > 7)
ConvertIntToDecimalStringN(sWonderCardData->unk_02DC[sWonderCardData->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
sWonderCardData->unk_02DC[sWonderCardData->unk_0175].unk_00 = sWonderCardData->unk_0000.unk_122[i + 2];
sWonderCardData->unk_0175++;
if (sWonderCardData->unk_0175 > 7)
break;
r6 = 0;
i += 2;
@ -362,7 +362,7 @@ void sub_801BEF8(void)
void sub_801C178(u8 whichWindow)
{
s8 sp0C = 0;
s32 windowId = gUnknown_02022C74->unk_0176[whichWindow];
s32 windowId = sWonderCardData->unk_0176[whichWindow];
PutWindowTilemap(windowId);
FillWindowPixelBuffer(windowId, 0);
switch (whichWindow)
@ -370,42 +370,42 @@ void sub_801C178(u8 whichWindow)
case 0:
{
s32 x;
AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_018B);
x = 160 - GetStringWidth(3, gUnknown_02022C74->unk_01B4, GetFontAttribute(3, 2));
AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal1], 0, sWonderCardData->unk_018B);
x = 160 - GetStringWidth(3, sWonderCardData->unk_01B4, GetFontAttribute(3, 2));
if (x < 0)
x = 0;
AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_01B4);
if (gUnknown_02022C74->unk_0000.unk_04 != 0)
AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal1], 0, sWonderCardData->unk_01B4);
if (sWonderCardData->unk_0000.unk_04 != 0)
{
AddTextPrinterParameterized3(windowId, 1, 166, 17, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_01DD);
AddTextPrinterParameterized3(windowId, 1, 166, 17, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal1], 0, sWonderCardData->unk_01DD);
}
break;
}
case 1:
for (; sp0C < 4; sp0C++)
{
AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal2], 0, gUnknown_02022C74->unk_01E4[sp0C]);
AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal2], 0, sWonderCardData->unk_01E4[sp0C]);
}
break;
case 2:
AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0], gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_0288);
if (gUnknown_02022C74->unk_0000.unk_08_0 != 2)
AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_082F0E18[sWonderCardData->unk_0000.unk_08_0], gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_0288);
if (sWonderCardData->unk_0000.unk_08_0 != 2)
{
AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0], gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02B1);
AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_082F0E18[sWonderCardData->unk_0000.unk_08_0], gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_02B1);
}
else
{
s32 x = 0;
s32 y = gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0] + 16;
s32 y = gUnknown_082F0E18[sWonderCardData->unk_0000.unk_08_0] + 16;
s32 spacing = GetFontAttribute(3, 2);
for (; sp0C < gUnknown_02022C74->unk_0175; sp0C++)
for (; sp0C < sWonderCardData->unk_0175; sp0C++)
{
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02DC[sp0C].unk_01);
if (gUnknown_02022C74->unk_02DC[sp0C].unk_42[0] != EOS)
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_02DC[sp0C].unk_01);
if (sWonderCardData->unk_02DC[sp0C].unk_42[0] != EOS)
{
x += GetStringWidth(3, gUnknown_02022C74->unk_02DC[sp0C].unk_01, spacing);
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02DC[sp0C].unk_42);
x += GetStringWidth(3, gUnknown_02022C74->unk_02DC[sp0C].unk_42, spacing) + gUnknown_02022C74->unk_02DC[sp0C].unk_00;
x += GetStringWidth(3, sWonderCardData->unk_02DC[sp0C].unk_01, spacing);
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_02DC[sp0C].unk_42);
x += GetStringWidth(3, sWonderCardData->unk_02DC[sp0C].unk_42, spacing) + sWonderCardData->unk_02DC[sp0C].unk_00;
}
}
}
@ -417,24 +417,24 @@ void sub_801C178(u8 whichWindow)
void sub_801C4C0(void)
{
u8 r7 = 0;
gUnknown_02022C74->unk_017C = 0xFF;
if (gUnknown_02022C74->unk_014C.unk_06 != SPECIES_NONE)
sWonderCardData->unk_017C = 0xFF;
if (sWonderCardData->unk_014C.unk_06 != SPECIES_NONE)
{
gUnknown_02022C74->unk_017C = sub_80D2D78(sub_80D2E84(gUnknown_02022C74->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
gSprites[gUnknown_02022C74->unk_017C].oam.priority = 2;
sWonderCardData->unk_017C = sub_80D2D78(sub_80D2E84(sWonderCardData->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
gSprites[sWonderCardData->unk_017C].oam.priority = 2;
}
if (gUnknown_02022C74->unk_0000.unk_09 != 0 && gUnknown_02022C74->unk_0000.unk_08_0 == 1)
if (sWonderCardData->unk_0000.unk_09 != 0 && sWonderCardData->unk_0000.unk_08_0 == 1)
{
LoadCompressedSpriteSheetUsingHeap(&gUnknown_082F1D00);
LoadSpritePalette(&gUnknown_082F1D08[gUnknown_02022C74->unk_0170->textPal4]);
for (; r7 < gUnknown_02022C74->unk_0000.unk_09; r7++)
LoadSpritePalette(&gUnknown_082F1D08[sWonderCardData->unk_0170->textPal4]);
for (; r7 < sWonderCardData->unk_0000.unk_09; r7++)
{
gUnknown_02022C74->unk_017D[r7][0] = 0xFF;
gUnknown_02022C74->unk_017D[r7][1] = 0xFF;
gUnknown_02022C74->unk_017D[r7][0] = CreateSprite(&gUnknown_082F1D48, 0xd8 - 32 * r7, 0x90, 8);
if (gUnknown_02022C74->unk_014C.unk_08[0][r7] != 0)
sWonderCardData->unk_017D[r7][0] = 0xFF;
sWonderCardData->unk_017D[r7][1] = 0xFF;
sWonderCardData->unk_017D[r7][0] = CreateSprite(&gUnknown_082F1D48, 0xd8 - 32 * r7, 0x90, 8);
if (sWonderCardData->unk_014C.unk_08[0][r7] != 0)
{
gUnknown_02022C74->unk_017D[r7][1] = sub_80D2D78(sub_80D2E84(gUnknown_02022C74->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
sWonderCardData->unk_017D[r7][1] = sub_80D2D78(sub_80D2E84(sWonderCardData->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
}
}
}
@ -443,19 +443,19 @@ void sub_801C4C0(void)
void sub_801C61C(void)
{
u8 r6 = 0;
if (gUnknown_02022C74->unk_017C != 0xFF)
sub_80D2EF8(&gSprites[gUnknown_02022C74->unk_017C]);
if (gUnknown_02022C74->unk_0000.unk_09 != 0 && gUnknown_02022C74->unk_0000.unk_08_0 == 1)
if (sWonderCardData->unk_017C != 0xFF)
sub_80D2EF8(&gSprites[sWonderCardData->unk_017C]);
if (sWonderCardData->unk_0000.unk_09 != 0 && sWonderCardData->unk_0000.unk_08_0 == 1)
{
for (; r6 < gUnknown_02022C74->unk_0000.unk_09; r6++)
for (; r6 < sWonderCardData->unk_0000.unk_09; r6++)
{
if (gUnknown_02022C74->unk_017D[r6][0] != 0xFF)
if (sWonderCardData->unk_017D[r6][0] != 0xFF)
{
DestroySprite(&gSprites[gUnknown_02022C74->unk_017D[r6][0]]);
DestroySprite(&gSprites[sWonderCardData->unk_017D[r6][0]]);
}
if (gUnknown_02022C74->unk_017D[r6][1] != 0xFF)
if (sWonderCardData->unk_017D[r6][1] != 0xFF)
{
sub_80D2EF8(&gSprites[gUnknown_02022C74->unk_017D[r6][1]]);
sub_80D2EF8(&gSprites[sWonderCardData->unk_017D[r6][1]]);
}
}
FreeSpriteTilesByTag(0x8000);
@ -484,7 +484,7 @@ struct UnkStruct_203F3CC
/*03a4*/ u8 buffer_03A4[0x1000];
};
EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_02022C78 = NULL;
EWRAM_DATA struct UnkStruct_203F3CC * sWonderNewsData = NULL;
void sub_801CDCC(void);
void sub_801CE7C(void);
@ -542,37 +542,37 @@ const struct UnkStruct_8467FB8 gUnknown_082F24C8[] = {
{1, 0, 0, 0, gWonderNewsGfx8, gWonderNewsTilemap8, gWonderNewsPal8}
};
bool32 sub_801C6C8(const struct MEventBuffer_3120_Sub * a0)
bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0)
{
if (a0 == NULL)
return FALSE;
gUnknown_02022C78 = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
if (gUnknown_02022C78 == NULL)
sWonderNewsData = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
if (sWonderNewsData == NULL)
return FALSE;
gUnknown_02022C78->unk_0000 = *a0;
if (gUnknown_02022C78->unk_0000.unk_03 >= ARRAY_COUNT(gUnknown_082F24C8))
gUnknown_02022C78->unk_0000.unk_03 = 0;
gUnknown_02022C78->unk_01BC = &gUnknown_082F24C8[gUnknown_02022C78->unk_0000.unk_03];
gUnknown_02022C78->unk_01C1 = 0xFF;
sWonderNewsData->unk_0000 = *a0;
if (sWonderNewsData->unk_0000.unk_03 >= ARRAY_COUNT(gUnknown_082F24C8))
sWonderNewsData->unk_0000.unk_03 = 0;
sWonderNewsData->unk_01BC = &gUnknown_082F24C8[sWonderNewsData->unk_0000.unk_03];
sWonderNewsData->unk_01C1 = 0xFF;
return TRUE;
}
void sub_801C72C(void)
void DestroyWonderNewsResources(void)
{
if (gUnknown_02022C78 != NULL)
if (sWonderNewsData != NULL)
{
*gUnknown_02022C78 = (struct UnkStruct_203F3CC){};
Free(gUnknown_02022C78);
gUnknown_02022C78 = NULL;
*sWonderNewsData = (struct UnkStruct_203F3CC){};
Free(sWonderNewsData);
sWonderNewsData = NULL;
}
}
s32 sub_801C758(void)
s32 FadeToWonderNewsMenu(void)
{
if (gUnknown_02022C78 == NULL)
if (sWonderNewsData == NULL)
return -1;
switch (gUnknown_02022C78->unk_01C0_1)
switch (sWonderNewsData->unk_01C0_1)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@ -599,19 +599,19 @@ s32 sub_801C758(void)
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(3);
decompress_and_copy_tile_data_to_vram(3, gUnknown_02022C78->unk_01BC->tiles, 0, 8, 0);
gUnknown_02022C78->unk_01C8[0] = AddWindow(&gUnknown_082F1DE8[0]);
gUnknown_02022C78->unk_01C8[1] = AddWindow(&gUnknown_082F1DE8[1]);
decompress_and_copy_tile_data_to_vram(3, sWonderNewsData->unk_01BC->tiles, 0, 8, 0);
sWonderNewsData->unk_01C8[0] = AddWindow(&gUnknown_082F1DE8[0]);
sWonderNewsData->unk_01C8[1] = AddWindow(&gUnknown_082F1DE8[1]);
break;
case 3:
if (free_temp_tile_data_buffers_if_possible())
return 0;
LoadPalette(stdpal_get(1), 0x20, 0x20);
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_02022C78->unk_01BC->pal, 0x10, 0x20);
LZ77UnCompWram(gUnknown_02022C78->unk_01BC->map, gUnknown_02022C78->buffer_03A4);
CopyRectToBgTilemapBufferRect(1, gUnknown_02022C78->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
CopyRectToBgTilemapBufferRect(3, gUnknown_02022C78->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
LoadPalette(sWonderNewsData->unk_01BC->pal, 0x10, 0x20);
LZ77UnCompWram(sWonderNewsData->unk_01BC->map, sWonderNewsData->buffer_03A4);
CopyRectToBgTilemapBufferRect(1, sWonderNewsData->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
CopyRectToBgTilemapBufferRect(3, sWonderNewsData->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(3);
break;
@ -628,26 +628,26 @@ s32 sub_801C758(void)
ShowBg(2);
ShowBg(3);
gPaletteFade.bufferTransferDisabled = FALSE;
gUnknown_02022C78->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_02022C78->unk_0394, &gUnknown_02022C78->unk_01C6);
sWonderNewsData->unk_01C1 = AddScrollIndicatorArrowPair(&sWonderNewsData->unk_0394, &sWonderNewsData->unk_01C6);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
UpdatePaletteFade();
break;
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C78->unk_01C0_1 = 0;
sWonderNewsData->unk_01C0_1 = 0;
return 1;
}
++gUnknown_02022C78->unk_01C0_1;
++sWonderNewsData->unk_01C0_1;
return 0;
}
s32 sub_801CA50(bool32 flag)
s32 FadeOutFromWonderNews(bool32 flag)
{
if (gUnknown_02022C78 == NULL)
if (sWonderNewsData == NULL)
return -1;
switch (gUnknown_02022C78->unk_01C0_1)
switch (sWonderNewsData->unk_01C0_1)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@ -675,21 +675,21 @@ s32 sub_801CA50(bool32 flag)
case 3:
HideBg(1);
HideBg(2);
RemoveWindow(gUnknown_02022C78->unk_01C8[1]);
RemoveWindow(gUnknown_02022C78->unk_01C8[0]);
RemoveWindow(sWonderNewsData->unk_01C8[1]);
RemoveWindow(sWonderNewsData->unk_01C8[0]);
break;
case 4:
ChangeBgY(2, 0, 0);
ChangeBgY(3, 0, 0);
if (gUnknown_02022C78->unk_01C1 != 0xFF)
if (sWonderNewsData->unk_01C1 != 0xFF)
{
RemoveScrollIndicatorArrowPair(gUnknown_02022C78->unk_01C1);
gUnknown_02022C78->unk_01C1 = 0xFF;
RemoveScrollIndicatorArrowPair(sWonderNewsData->unk_01C1);
sWonderNewsData->unk_01C1 = 0xFF;
}
break;
case 5:
sub_80186EC(gUnknown_02022C60, flag);
sub_8018798(3);
PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
MG_DrawCheckerboardPattern(3);
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(3);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
@ -697,36 +697,36 @@ s32 sub_801CA50(bool32 flag)
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C78->unk_01C0_1 = 0;
sWonderNewsData->unk_01C0_1 = 0;
return 1;
}
++gUnknown_02022C78->unk_01C0_1;
++sWonderNewsData->unk_01C0_1;
return 0;
}
void sub_801CC38(void)
void MENews_RemoveScrollIndicatorArrowPair(void)
{
if (!gUnknown_02022C78->unk_01C0_0 && gUnknown_02022C78->unk_01C1 != 0xFF)
if (!sWonderNewsData->unk_01C0_0 && sWonderNewsData->unk_01C1 != 0xFF)
{
RemoveScrollIndicatorArrowPair(gUnknown_02022C78->unk_01C1);
gUnknown_02022C78->unk_01C1 = 0xFF;
gUnknown_02022C78->unk_01C0_0 = TRUE;
RemoveScrollIndicatorArrowPair(sWonderNewsData->unk_01C1);
sWonderNewsData->unk_01C1 = 0xFF;
sWonderNewsData->unk_01C0_0 = TRUE;
}
}
void sub_801CC80(void)
void MENews_AddScrollIndicatorArrowPair(void)
{
if (gUnknown_02022C78->unk_01C0_0)
if (sWonderNewsData->unk_01C0_0)
{
gUnknown_02022C78->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_02022C78->unk_0394, &gUnknown_02022C78->unk_01C6);
gUnknown_02022C78->unk_01C0_0 = FALSE;
sWonderNewsData->unk_01C1 = AddScrollIndicatorArrowPair(&sWonderNewsData->unk_0394, &sWonderNewsData->unk_01C6);
sWonderNewsData->unk_01C0_0 = FALSE;
}
}
u32 sub_801CCD0(u16 input)
u32 MENews_GetInput(u16 input)
{
if (gUnknown_02022C78->unk_01C2_0)
if (sWonderNewsData->unk_01C2_0)
{
sub_801CFA4();
return 0xFF;
@ -738,26 +738,26 @@ u32 sub_801CCD0(u16 input)
case B_BUTTON:
return 1;
case DPAD_UP:
if (gUnknown_02022C78->unk_01C6 == 0)
if (sWonderNewsData->unk_01C6 == 0)
return 0xFF;
if (gUnknown_02022C78->unk_01C0_0)
if (sWonderNewsData->unk_01C0_0)
return 0xFF;
gUnknown_02022C78->unk_01C3_0 = FALSE;
sWonderNewsData->unk_01C3_0 = FALSE;
break;
case DPAD_DOWN:
if (gUnknown_02022C78->unk_01C6 == gUnknown_02022C78->unk_01C4)
if (sWonderNewsData->unk_01C6 == sWonderNewsData->unk_01C4)
return 0xFF;
if (gUnknown_02022C78->unk_01C0_0)
if (sWonderNewsData->unk_01C0_0)
return 0xFF;
gUnknown_02022C78->unk_01C3_0 = TRUE;
sWonderNewsData->unk_01C3_0 = TRUE;
break;
default:
return 0xFF;
}
gUnknown_02022C78->unk_01C2_0 = TRUE;
gUnknown_02022C78->unk_01C2_1 = 2;
gUnknown_02022C78->unk_01C3_1 = 0;
if (gUnknown_02022C78->unk_01C3_0 == FALSE)
sWonderNewsData->unk_01C2_0 = TRUE;
sWonderNewsData->unk_01C2_1 = 2;
sWonderNewsData->unk_01C3_1 = 0;
if (sWonderNewsData->unk_01C3_0 == FALSE)
return 2;
else
return 3;
@ -766,44 +766,44 @@ u32 sub_801CCD0(u16 input)
void sub_801CDCC(void)
{
u8 i = 0;
memcpy(gUnknown_02022C78->unk_01CE, gUnknown_02022C78->unk_0000.unk_04, 40);
gUnknown_02022C78->unk_01CE[40] = EOS;
memcpy(sWonderNewsData->unk_01CE, sWonderNewsData->unk_0000.unk_04, 40);
sWonderNewsData->unk_01CE[40] = EOS;
for (; i < 10; ++i)
{
memcpy(gUnknown_02022C78->unk_01F7[i], gUnknown_02022C78->unk_0000.unk_2C[i], 40);
gUnknown_02022C78->unk_01F7[i][40] = EOS;
if (i > 7 && gUnknown_02022C78->unk_01F7[i][0] != EOS)
++gUnknown_02022C78->unk_01C4;
memcpy(sWonderNewsData->unk_01F7[i], sWonderNewsData->unk_0000.unk_2C[i], 40);
sWonderNewsData->unk_01F7[i][40] = EOS;
if (i > 7 && sWonderNewsData->unk_01F7[i][0] != EOS)
++sWonderNewsData->unk_01C4;
}
gUnknown_02022C78->unk_0394 = gUnknown_082F1DF8;
gUnknown_02022C78->unk_0394.fullyDownThreshold = gUnknown_02022C78->unk_01C4;
sWonderNewsData->unk_0394 = gUnknown_082F1DF8;
sWonderNewsData->unk_0394.fullyDownThreshold = sWonderNewsData->unk_01C4;
}
void sub_801CE7C(void)
{
u8 i = 0;
s32 x;
PutWindowTilemap(gUnknown_02022C78->unk_01C8[0]);
PutWindowTilemap(gUnknown_02022C78->unk_01C8[1]);
FillWindowPixelBuffer(gUnknown_02022C78->unk_01C8[0], 0);
FillWindowPixelBuffer(gUnknown_02022C78->unk_01C8[1], 0);
x = (0xe0 - GetStringWidth(3, gUnknown_02022C78->unk_01CE, GetFontAttribute(3, 2))) / 2;
PutWindowTilemap(sWonderNewsData->unk_01C8[0]);
PutWindowTilemap(sWonderNewsData->unk_01C8[1]);
FillWindowPixelBuffer(sWonderNewsData->unk_01C8[0], 0);
FillWindowPixelBuffer(sWonderNewsData->unk_01C8[1], 0);
x = (0xe0 - GetStringWidth(3, sWonderNewsData->unk_01CE, GetFontAttribute(3, 2))) / 2;
if (x < 0)
x = 0;
AddTextPrinterParameterized3(gUnknown_02022C78->unk_01C8[0], 3, x, 6, gUnknown_082F1DE0[gUnknown_02022C78->unk_01BC->textPal1], 0, gUnknown_02022C78->unk_01CE);
AddTextPrinterParameterized3(sWonderNewsData->unk_01C8[0], 3, x, 6, gUnknown_082F1DE0[sWonderNewsData->unk_01BC->textPal1], 0, sWonderNewsData->unk_01CE);
for (; i < 10; ++i)
{
AddTextPrinterParameterized3(gUnknown_02022C78->unk_01C8[1], 3, 0, 16 * i + 2, gUnknown_082F1DE0[gUnknown_02022C78->unk_01BC->textPal2], 0, gUnknown_02022C78->unk_01F7[i]);
AddTextPrinterParameterized3(sWonderNewsData->unk_01C8[1], 3, 0, 16 * i + 2, gUnknown_082F1DE0[sWonderNewsData->unk_01BC->textPal2], 0, sWonderNewsData->unk_01F7[i]);
}
CopyWindowToVram(gUnknown_02022C78->unk_01C8[0], 3);
CopyWindowToVram(gUnknown_02022C78->unk_01C8[1], 3);
CopyWindowToVram(sWonderNewsData->unk_01C8[0], 3);
CopyWindowToVram(sWonderNewsData->unk_01C8[1], 3);
}
void sub_801CFA4(void)
{
u16 r4 = gUnknown_02022C78->unk_01C2_1;
u16 r4 = sWonderNewsData->unk_01C2_1;
r4 <<= 8;
if (gUnknown_02022C78->unk_01C3_0)
if (sWonderNewsData->unk_01C3_0)
{
ChangeBgY(2, r4, 1);
ChangeBgY(3, r4, 1);
@ -813,14 +813,14 @@ void sub_801CFA4(void)
ChangeBgY(2, r4, 2);
ChangeBgY(3, r4, 2);
}
gUnknown_02022C78->unk_01C3_1 += gUnknown_02022C78->unk_01C2_1;
if (gUnknown_02022C78->unk_01C3_1 > 15)
sWonderNewsData->unk_01C3_1 += sWonderNewsData->unk_01C2_1;
if (sWonderNewsData->unk_01C3_1 > 15)
{
if (gUnknown_02022C78->unk_01C3_0)
++gUnknown_02022C78->unk_01C6;
if (sWonderNewsData->unk_01C3_0)
++sWonderNewsData->unk_01C6;
else
--gUnknown_02022C78->unk_01C6;
gUnknown_02022C78->unk_01C2_0 = FALSE;
gUnknown_02022C78->unk_01C3_1 = 0;
--sWonderNewsData->unk_01C6;
sWonderNewsData->unk_01C2_0 = FALSE;
sWonderNewsData->unk_01C3_1 = 0;
}
}

View File

@ -10,7 +10,7 @@ static u32 sub_801DD44(struct MysteryEventStruct *);
static void sub_801DCD8(struct MysteryEventStruct *);
static void sub_801DCCC(struct MysteryEventStruct *);
void sub_801DB68(u32 a0)
void GenerateRandomNews(u32 a0)
{
struct MysteryEventStruct *r5 = sub_801B044();
@ -59,7 +59,7 @@ u16 sub_801DC20(void)
struct MysteryEventStruct *r4 = sub_801B044();
u16 r5;
if (!IsMysteryEventEnabled() || !sub_801B0CC())
if (!IsMysteryEventEnabled() || !ValidateReceivedWonderNews())
return 0;
r5 = sub_801DD44(r4);

View File

@ -94,7 +94,7 @@ void CB2_InitMysteryEventMenu(void)
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
LoadUserWindowBorderGfx(0, 1u, 0xD0u);
sub_81978B0(0xE0);
Menu_LoadStdPalAt(0xE0);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
CreateTask(Task_DestroySelf, 0);

File diff suppressed because it is too large Load Diff

View File

@ -23,6 +23,19 @@
#include "constants/species.h"
#include "constants/vars.h"
#define AREA_SCREEN_WIDTH 32
#define AREA_SCREEN_HEIGHT 20
#define GLOW_TILE_FULL 0xFFFF
#define GLOW_TILE_LEFT (1 << 0)
#define GLOW_TILE_RIGHT (1 << 1)
#define GLOW_TILE_TOP (1 << 2)
#define GLOW_TILE_BOTTOM (1 << 3)
#define GLOW_TILE_BOTTOM_RIGHT (1 << 4)
#define GLOW_TILE_TOP_RIGHT (1 << 5)
#define GLOW_TILE_BOTTOM_LEFT (1 << 6)
#define GLOW_TILE_TOP_LEFT (1 << 7)
struct PokeDexAreaScreenMapIdentity
{
u8 mapGroup;
@ -107,24 +120,114 @@ static const u16 sLandmarkData[][2] =
{MAPSEC_NONE}
};
static const u8 sAreaGlowTilemapMapping[] =
{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x11, 0x20, 0x02, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x12, 0x21, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x13, 0x22, 0x02, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x14, 0x01, 0x23, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x15, 0x20, 0x23, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x16, 0x21, 0x23, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x17, 0x22, 0x23, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x2a, 0x2e, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x18, 0x01, 0x24, 0x03, 0x04, 0x05, 0x06, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x19, 0x20, 0x24, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x1a, 0x21, 0x24, 0x03, 0x04, 0x05, 0x06, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x1b, 0x22, 0x24, 0x03, 0x27, 0x2d, 0x06, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x1c, 0x01, 0x25, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x1d, 0x20, 0x25, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x29, 0x09, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x1e, 0x21, 0x25, 0x03, 0x26, 0x05, 0x2c, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x1f, 0x22, 0x25, 0x03, 0x28, 0x2d, 0x2c, 0x07, 0x2b, 0x2e, 0x2f, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
// Only some parts of this array are acutally used, because corner flags that overlap
// with edge flags are cancelled out before lookup. For example, GLOW_TILE_BOTTOM_RIGHT | GLOW_TILE_RIGHT
// will never be read.
//
// The rest of the bytes seem to be old data from before the cancellation was implemented.
// Most of them line up as you would expect ([BOTTOM_RIGHT | RIGHT] has the same value as [RIGHT]).
//
// Any unreachable entries are simply listed in order, without the fancy "[FLAGS] = 0xXX" notation.
static const u8 sAreaGlowTilemapMapping[] = {
[0] = 0x00,
[GLOW_TILE_LEFT] = 0x01,
[GLOW_TILE_RIGHT] = 0x02,
[GLOW_TILE_RIGHT | GLOW_TILE_LEFT] = 0x03,
[GLOW_TILE_TOP] = 0x04,
[GLOW_TILE_TOP | GLOW_TILE_LEFT] = 0x05,
[GLOW_TILE_TOP | GLOW_TILE_RIGHT] = 0x06,
[GLOW_TILE_TOP | GLOW_TILE_RIGHT | GLOW_TILE_LEFT] = 0x07,
[GLOW_TILE_BOTTOM] = 0x08,
[GLOW_TILE_BOTTOM | GLOW_TILE_LEFT] = 0x09,
[GLOW_TILE_BOTTOM | GLOW_TILE_RIGHT] = 0x0a,
[GLOW_TILE_BOTTOM | GLOW_TILE_RIGHT | GLOW_TILE_LEFT] = 0x0b,
[GLOW_TILE_BOTTOM | GLOW_TILE_TOP] = 0x0c,
[GLOW_TILE_BOTTOM | GLOW_TILE_TOP | GLOW_TILE_LEFT] = 0x0d,
[GLOW_TILE_BOTTOM | GLOW_TILE_TOP | GLOW_TILE_RIGHT] = 0x0e,
[GLOW_TILE_BOTTOM | GLOW_TILE_TOP | GLOW_TILE_RIGHT | GLOW_TILE_LEFT] = 0x0f,
[GLOW_TILE_BOTTOM_RIGHT] = 0x11,
[GLOW_TILE_BOTTOM_RIGHT | GLOW_TILE_LEFT] = 0x20,
0x02, 0x03,
[GLOW_TILE_BOTTOM_RIGHT | GLOW_TILE_TOP] = 0x27,
[GLOW_TILE_BOTTOM_RIGHT | GLOW_TILE_TOP | GLOW_TILE_LEFT] = 0x2d,
0x06, 0x07, 0x08, 0x09, 0x0a,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_RIGHT] = 0x12,
[GLOW_TILE_TOP_RIGHT | GLOW_TILE_LEFT] = 0x21,
0x02, 0x03, 0x04, 0x05, 0x06,
0x07,
[GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM] = 0x2a,
[GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM | GLOW_TILE_LEFT] = 0x2e,
0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
0x0f,
[GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM_RIGHT] = 0x13,
[GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM_RIGHT | GLOW_TILE_LEFT] = 0x22,
0x02, 0x03, 0x27, 0x2d, 0x06,
0x07, 0x2a, 0x2e, 0x0a, 0x0b,
0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_BOTTOM_LEFT] = 0x14,
0x01,
[GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_RIGHT] = 0x23,
0x03,
[GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_TOP] = 0x26,
0x05,
[GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_TOP | GLOW_TILE_RIGHT] = 0x2c,
0x07, 0x08, 0x09, 0x0a, 0x0b,
0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_BOTTOM_RIGHT] = 0x15,
0x20, 0x23, 0x03,
[GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_BOTTOM_RIGHT | GLOW_TILE_TOP] = 0x28,
0x2d, 0x2c, 0x07, 0x08, 0x09,
0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
0x0f,
[GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_TOP_RIGHT] = 0x16,
0x21, 0x23, 0x03, 0x26, 0x05,
0x2c, 0x07, 0x2a, 0x2e, 0x0a,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM_RIGHT] = 0x17,
0x22, 0x23, 0x03, 0x28, 0x2d,
0x2c, 0x07, 0x2a, 0x2e, 0x0a,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT] = 0x18,
0x01,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_RIGHT] = 0x24,
0x03, 0x04, 0x05, 0x06, 0x07,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM] = 0x29,
0x09,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM | GLOW_TILE_RIGHT] = 0x2f,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM_RIGHT] = 0x19,
0x20, 0x24, 0x03, 0x27, 0x2d,
0x06, 0x07, 0x29, 0x09, 0x2f,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_TOP_RIGHT] = 0x1a,
0x21, 0x24, 0x03, 0x04, 0x05,
0x06, 0x07,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM] = 0x2b,
0x2e, 0x2f, 0x0b, 0x0c, 0x0d,
0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM_RIGHT] = 0x1b,
0x22, 0x24, 0x03, 0x27, 0x2d,
0x06, 0x07, 0x2b, 0x2e, 0x2f,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM_LEFT] = 0x1c,
0x01,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_RIGHT] = 0x25,
0x03, 0x26, 0x05, 0x2c, 0x07,
0x29, 0x09, 0x2f, 0x0b, 0x0c,
0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_BOTTOM_RIGHT] = 0x1d,
0x20, 0x25, 0x03, 0x28, 0x2d,
0x2c, 0x07, 0x29, 0x09, 0x2f,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_TOP_RIGHT] = 0x1e,
0x21, 0x25, 0x03, 0x26, 0x05,
0x2c, 0x07, 0x2b, 0x2e, 0x2f,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
[GLOW_TILE_TOP_LEFT | GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_TOP_RIGHT | GLOW_TILE_BOTTOM_RIGHT] = 0x1f,
0x22, 0x25, 0x03, 0x28, 0x2d,
0x2c, 0x07, 0x2b, 0x2e, 0x2f,
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
};
static const struct UnkStruct_1C4D70 sUnknown_085B4018 =
@ -255,11 +358,11 @@ static void FindMapsWithMon(u16 species)
{
switch (sFeebasData[i][1])
{
case MAP_GROUP(PETALBURG_CITY):
case MAP_GROUP_OVERWORLD_MONS:
SetAreaHasMon(sFeebasData[i][1], sFeebasData[i][2]);
break;
case MAP_GROUP(METEOR_FALLS_1F_1R):
case MAP_GROUP(SAFARI_ZONE_NORTHWEST):
case MAP_GROUP_SPECIAL_MONS_1:
case MAP_GROUP_SPECIAL_MONS_2:
SetSpecialMapHasMon(sFeebasData[i][1], sFeebasData[i][2]);
break;
}
@ -268,15 +371,15 @@ static void FindMapsWithMon(u16 species)
for (i = 0; gWildMonHeaders[i].mapGroup != 0xFF; i++)
{
if (MapHasMon(gWildMonHeaders + i, species))
if (MapHasMon(&gWildMonHeaders[i], species))
{
switch (gWildMonHeaders[i].mapGroup)
{
case MAP_GROUP(PETALBURG_CITY):
case MAP_GROUP_OVERWORLD_MONS:
SetAreaHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum);
break;
case MAP_GROUP(METEOR_FALLS_1F_1R):
case MAP_GROUP(SAFARI_ZONE_NORTHWEST):
case MAP_GROUP_SPECIAL_MONS_1:
case MAP_GROUP_SPECIAL_MONS_2:
SetSpecialMapHasMon(gWildMonHeaders[i].mapGroup, gWildMonHeaders[i].mapNum);
break;
}
@ -390,18 +493,18 @@ static void BuildAreaGlowTilemap(void)
u16 i, y, x, j;
u16 val;
for (i = 0; i < 0x280; i++)
for (i = 0; i < ARRAY_COUNT(sPokedexAreaScreen->areaGlowTilemap); i++)
sPokedexAreaScreen->areaGlowTilemap[i] = 0;
for (i = 0; i < sPokedexAreaScreen->numOverworldAreas; i++)
{
j = 0;
for (y = 0; y < 20; y++)
for (y = 0; y < AREA_SCREEN_HEIGHT; y++)
{
for (x = 0; x < 32; x++)
for (x = 0; x < AREA_SCREEN_WIDTH; x++)
{
if (GetRegionMapSectionIdAt(x, y) == sPokedexAreaScreen->overworldAreasWithMons[i].regionMapSectionId)
sPokedexAreaScreen->areaGlowTilemap[j] = 0xFFFF;
sPokedexAreaScreen->areaGlowTilemap[j] = GLOW_TILE_FULL;
j++;
}
@ -409,51 +512,58 @@ static void BuildAreaGlowTilemap(void)
}
j = 0;
for (y = 0; y < 20; y++)
for (y = 0; y < AREA_SCREEN_HEIGHT; y++)
{
for (x = 0; x < 32; x++)
for (x = 0; x < AREA_SCREEN_WIDTH; x++)
{
if (sPokedexAreaScreen->areaGlowTilemap[j] == 0xFFFF)
if (sPokedexAreaScreen->areaGlowTilemap[j] == GLOW_TILE_FULL)
{
if (x != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 1] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j - 1] |= 0x02;
if (x != 31 && sPokedexAreaScreen->areaGlowTilemap[j + 1] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j + 1] |= 0x01;
if (y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 32] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j - 32] |= 0x08;
if (y != 19 && sPokedexAreaScreen->areaGlowTilemap[j + 32] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j + 32] |= 0x04;
if (x != 0 && y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 33] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j - 33] |= 0x10;
if (x != 31 && y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 31] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j - 31] |= 0x40;
if (x != 0 && y != 19 && sPokedexAreaScreen->areaGlowTilemap[j + 31] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j + 31] |= 0x20;
if (x != 31 && y != 19 && sPokedexAreaScreen->areaGlowTilemap[j + 33] != 0xFFFF)
sPokedexAreaScreen->areaGlowTilemap[j + 33] |= 0x80;
// The "tile != GLOW_TILE_FULL" check is pointless in all of these conditionals,
// since there's no harm in OR'ing 0xFFFF with anything else.
// Edges
if (x != 0 && sPokedexAreaScreen->areaGlowTilemap[j - 1] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j - 1] |= GLOW_TILE_RIGHT;
if (x != AREA_SCREEN_WIDTH - 1 && sPokedexAreaScreen->areaGlowTilemap[j + 1] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j + 1] |= GLOW_TILE_LEFT;
if (y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - AREA_SCREEN_WIDTH] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j - AREA_SCREEN_WIDTH] |= GLOW_TILE_BOTTOM;
if (y != AREA_SCREEN_HEIGHT - 1 && sPokedexAreaScreen->areaGlowTilemap[j + AREA_SCREEN_WIDTH] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j + AREA_SCREEN_WIDTH] |= GLOW_TILE_TOP;
// Diagonals
if (x != 0 && y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - AREA_SCREEN_WIDTH - 1] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j - AREA_SCREEN_WIDTH - 1] |= GLOW_TILE_BOTTOM_RIGHT;
if (x != AREA_SCREEN_WIDTH - 1 && y != 0 && sPokedexAreaScreen->areaGlowTilemap[j - AREA_SCREEN_WIDTH + 1] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j - AREA_SCREEN_WIDTH + 1] |= GLOW_TILE_BOTTOM_LEFT;
if (x != 0 && y != AREA_SCREEN_HEIGHT - 1 && sPokedexAreaScreen->areaGlowTilemap[j + AREA_SCREEN_WIDTH - 1] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j + AREA_SCREEN_WIDTH - 1] |= GLOW_TILE_TOP_RIGHT;
if (x != AREA_SCREEN_WIDTH - 1 && y != AREA_SCREEN_HEIGHT - 1 && sPokedexAreaScreen->areaGlowTilemap[j + AREA_SCREEN_WIDTH + 1] != GLOW_TILE_FULL)
sPokedexAreaScreen->areaGlowTilemap[j + AREA_SCREEN_WIDTH + 1] |= GLOW_TILE_TOP_LEFT;
}
j++;
}
}
for (i = 0; i < 0x280; i++)
for (i = 0; i < ARRAY_COUNT(sPokedexAreaScreen->areaGlowTilemap); i++)
{
if (sPokedexAreaScreen->areaGlowTilemap[i] == 0xFFFF)
if (sPokedexAreaScreen->areaGlowTilemap[i] == GLOW_TILE_FULL)
{
sPokedexAreaScreen->areaGlowTilemap[i] = 0x10;
sPokedexAreaScreen->areaGlowTilemap[i] |= 0xA000;
}
else if (sPokedexAreaScreen->areaGlowTilemap[i])
{
if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x02)
sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFFCF;
if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x01)
sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFF3F;
if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x08)
sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFFAF;
if (sPokedexAreaScreen->areaGlowTilemap[i] & 0x04)
sPokedexAreaScreen->areaGlowTilemap[i] &= 0xFF5F;
// Get rid of overlapping flags
if (sPokedexAreaScreen->areaGlowTilemap[i] & GLOW_TILE_RIGHT)
sPokedexAreaScreen->areaGlowTilemap[i] &= ~(GLOW_TILE_BOTTOM_RIGHT | GLOW_TILE_TOP_RIGHT);
if (sPokedexAreaScreen->areaGlowTilemap[i] & GLOW_TILE_LEFT)
sPokedexAreaScreen->areaGlowTilemap[i] &= ~(GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_TOP_LEFT);
if (sPokedexAreaScreen->areaGlowTilemap[i] & GLOW_TILE_BOTTOM)
sPokedexAreaScreen->areaGlowTilemap[i] &= ~(GLOW_TILE_BOTTOM_LEFT | GLOW_TILE_BOTTOM_RIGHT);
if (sPokedexAreaScreen->areaGlowTilemap[i] & GLOW_TILE_TOP)
sPokedexAreaScreen->areaGlowTilemap[i] &= ~(GLOW_TILE_TOP_LEFT | GLOW_TILE_TOP_RIGHT);
sPokedexAreaScreen->areaGlowTilemap[i] = sAreaGlowTilemapMapping[sPokedexAreaScreen->areaGlowTilemap[i]];
sPokedexAreaScreen->areaGlowTilemap[i] |= 0xA000;

View File

@ -4419,7 +4419,7 @@ static void PrintStorageActionText(u8 id)
DynamicPlaceholderTextUtil_ExpandPlaceholders(sPSSData->field_2190, gPCStorageActionTexts[id].text);
FillWindowPixelBuffer(1, PIXEL_FILL(1));
AddTextPrinterParameterized(1, 1, sPSSData->field_2190, 0, 1, TEXT_SPEED_FF, NULL);
sub_8098858(1, 2, 14);
DrawTextBorderOuter(1, 2, 14);
PutWindowTilemap(1);
CopyWindowToVram(1, 2);
schedule_bg_copy_tilemap_to_vram(0);

View File

@ -405,7 +405,7 @@ bool32 sub_80991F8(void)
u8 *sub_8099244(void)
{
struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data;
if (!sub_801B27C())
if (!ValidateReceivedWonderCard())
return NULL;
if (scriptData->magic != RAM_SCRIPT_MAGIC)
return NULL;

View File

@ -488,7 +488,7 @@ void sub_80F910C(void)
if (gIsLinkContest & 2)
{
if (gReceivedRemoteLinkPlayers)
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
}
}

View File

@ -1185,7 +1185,7 @@ static bool32 sub_80A03E4(u8 *par1)
InitBgsFromTemplates(0, sUnknown_085105A8, ARRAY_COUNT(sUnknown_085105A8));
InitWindows(sUnknown_085105AC);
LoadUserWindowBorderGfx_(0, 8, 224);
sub_81978B0(240);
Menu_LoadStdPalAt(240);
break;
case 3:
ShowBg(0);
@ -1234,7 +1234,7 @@ static void sub_80A0550(u8 taskId)
2,
1,
3);
sub_8098858(0, 8, 14);
DrawTextBorderOuter(0, 8, 14);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);

View File

@ -113,7 +113,7 @@ void LoadUserWindowBorderGfx(u8 windowId, u16 destOffset, u8 palOffset)
LoadWindowGfx(windowId, gSaveBlock2Ptr->optionsWindowFrameType, destOffset, palOffset);
}
void sub_8098858(u8 windowId, u16 tileNum, u8 palNum)
void DrawTextBorderOuter(u8 windowId, u16 tileNum, u8 palNum)
{
u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);
@ -131,7 +131,7 @@ void sub_8098858(u8 windowId, u16 tileNum, u8 palNum)
FillBgTilemapBufferRect(bgLayer, tileNum + 8, tilemapLeft + width, tilemapTop + height, 1, 1, palNum);
}
void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum)
void DrawTextBorderInner(u8 windowId, u16 tileNum, u8 palNum)
{
u8 bgLayer = GetWindowAttribute(windowId, WINDOW_BG);
u16 tilemapLeft = GetWindowAttribute(windowId, WINDOW_TILEMAP_LEFT);

View File

@ -2014,7 +2014,7 @@ static void sub_80781C8(void)
FreeAllWindowBuffers();
Free(gUnknown_0203229C);
gMain.callback1 = NULL;
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
SetMainCallback2(sub_807AE50);
}
}
@ -2543,7 +2543,7 @@ static void sub_8078DBC(void)
if (gUnknown_0203229C->tradeMenuCursorPosition < 6)
{
sub_8098858(1, 1, 14);
DrawTextBorderOuter(1, 1, 14);
FillWindowPixelBuffer(1, PIXEL_FILL(1));
PrintMenuTable(1, 2, gUnknown_0832DEAC);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(1, 2, 0);
@ -2844,7 +2844,7 @@ static void sub_80794CC(void)
Free(gUnknown_02032184);
Free(gUnknown_0203229C);
FreeAllWindowBuffers();
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
SetMainCallback2(CB2_ReturnToFieldFromMultiplayer);
}
}
@ -3341,7 +3341,7 @@ static void sub_807A19C(u8 a0)
{
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, gUnknown_0832DEBC[a0], 0, 1, TEXT_SPEED_FF, NULL);
sub_8098858(0, 20, 12);
DrawTextBorderOuter(0, 20, 12);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
}
@ -6123,7 +6123,7 @@ static void c2_080543C4(void)
FreeMonSpritesGfx();
FREE_AND_SET_NULL(gUnknown_020322A0);
if (gWirelessCommType)
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
SetMainCallback2(gMain.savedCallback);
}
RunTasks();

View File

@ -45,6 +45,8 @@
#include "event_obj_lock.h"
#include "union_room_chat.h"
#include "berry_crush.h"
#include "mystery_gift.h"
#include "union_room_player_avatar.h"
EWRAM_DATA u8 gUnknown_02022C20[12] = {};
EWRAM_DATA u8 gUnknown_02022C2C = 0;
@ -60,8 +62,6 @@ EWRAM_DATA struct TradeUnkStruct gUnknown_02022C40 = {};
IWRAM_DATA struct UnkStruct_Leader *gUnknown_03000DA0;
IWRAM_DATA struct UnkStruct_Group *gUnknown_03000DA4;
IWRAM_DATA struct UnkStruct_URoom *gUnknown_03000DA8;
IWRAM_DATA void *gUnknown_03000DAC;
IWRAM_DATA bool32 gUnknown_03000DB0;
// this file's functions
void sub_80173E0(u8 windowId, u8 arg1, const u8 *str, u8 arg3, u8 arg4, u8 arg5);
@ -100,21 +100,17 @@ void sub_801AC54(void);
void sub_802A9A8(u8 monId, MainCallback callback);
void sub_802493C(u8 monId, MainCallback callback);
void sub_80149D8(void);
u16 sub_8019930(void);
void sub_8018784(u8 windowId);
s8 sub_8018B08(u8 *textState, u8 *arg1, u8 arg2, const u8 *str);
void MG_DrawTextBorder(u8 windowId);
s8 mevent_message_print_and_prompt_yes_no(u8 *textState, u8 *arg1, u8 arg2, const u8 *str);
bool32 sub_8016F1C(struct UnkLinkRfuStruct_02022B14 *arg0, s16 arg1);
u8 sub_8016DF0(struct UnkStruct_Main4 *arg0, struct UnkStruct_Main4 *arg1, u32 arg2);
void sub_8019F2C(void);
void sub_8019E70(u8 *arg0, s32 arg1);
bool32 sub_80180A0(u32 monId, struct TradeUnkStruct *arg1);
void sub_80180E8(u32 monId, struct TradeUnkStruct *arg1);
bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
void sub_80181CC(void);
bool32 sub_8017940(void);
u8 sub_8016B00(void);
void sub_801A274(struct UnkStruct_URoom *arg0);
void sub_801A284(struct UnkStruct_URoom *arg0);
bool32 sub_8017FD8(struct UnkStruct_URoom *arg0);
void sub_801689C(struct UnkStruct_URoom *arg0);
u8 sub_80181DC(struct UnkStruct_URoom *arg0);
@ -123,7 +119,6 @@ bool32 sub_801704C(void);
s32 sub_8017CF8(s32 arg1, struct UnkStruct_Main0 *arg0);
s32 sub_80179D4(struct UnkStruct_Main0 *arg0, u8 arg1, u8 arg2, u32 playerGender);
void sub_801818C(bool32 arg0);
void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
s32 sub_8017178(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate);
s32 sub_80172A0(u8 *arg0, u8 *arg1, u8 *arg2, u8 *arg3, const struct WindowTemplate *winTemplate, const struct ListMenuTemplate *menuTemplate, struct UnkStruct_Main0 *arg6);
s32 sub_8017CB0(struct UnkStruct_x20 * arg, s32 arg1);
@ -133,12 +128,10 @@ void sub_8018220(u8 *unused, struct UnkStruct_URoom *arg1, bool8 arg2);
void sub_8017D9C(u8 *dst, s32 arg1, u32 playerGender);
u32 sub_80179AC(struct UnkStruct_x20 *arg0);
void sub_8017E00(u8 *dst, u8 arg1);
void sub_8019F04(u8 *spriteIds);
void sub_8019E3C(void);
void sub_80173B0(void);
s32 sub_8017D04(u32 type, u32 species);
bool32 sub_8017020(const u8 *src);
void sub_8019BA8(void *);
u8 sub_8019BA8(struct UnkStruct_8019BA8 * );
s32 sub_8017EA0(u8 *dst, u32 gender, u16 *arg2, struct UnkStruct_URoom *arg3);
void sub_801697C(u8 taskId);
bool8 sub_8017630(struct UnkStruct_Shared* arg0, const struct UnkStruct_Shared* arg1);
@ -1555,7 +1548,7 @@ void sub_8012780(u8 taskId)
break;
case 21:
case 23:
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
sub_800EDD4();
sub_8012F64(data);
data->state++;
@ -2076,7 +2069,7 @@ void sub_80134E8(u8 taskId)
data->state++;
break;
case 13:
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
if (PrintOnTextbox(&data->textState, gUnknown_082EDE9C[sub_8011A74()]))
{
gSpecialVar_Result = 6;
@ -2084,12 +2077,12 @@ void sub_80134E8(u8 taskId)
}
break;
case 11:
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
gSpecialVar_Result = 5;
data->state = 23;
break;
case 15:
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
if (PrintOnTextbox(&data->textState, gUnknown_082EDE9C[sub_8011A74()]))
{
gSpecialVar_Result = 8;
@ -2339,7 +2332,7 @@ void sub_8013F90(u8 taskId)
if (GetBlockReceivedStatus() == 3)
{
gEnemyParty[0] = *(struct Pokemon*)(gBlockRecvBuffer[GetMultiplayerId() ^ 1]);
IncrementGameStat(GAME_STAT_50);
IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES);
ResetBlockReceivedFlags();
gTasks[taskId].data[0]++;
}
@ -2481,7 +2474,7 @@ void sub_80143E4(void *arg0, bool32 arg1)
TrainerCard_GenerateCardForPlayer((struct TrainerCard *)argAsU16Ptr);
if (arg1)
argAsU16Ptr[48] = sub_801B39C();
argAsU16Ptr[48] = GetWonderCardFlagID();
else
argAsU16Ptr[48] = 0;
}
@ -2680,7 +2673,7 @@ void sub_8014790(u8 taskId)
case 8:
if (gReceivedRemoteLinkPlayers == 0)
{
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
EnableBothScriptContexts();
DestroyTask(taskId);
}
@ -2699,7 +2692,7 @@ void sub_80149D8(void)
gTasks[taskId].data[0] = 0;
}
void sub_8014A00(u32 arg0)
void MEvent_CreateTask_Leader(u32 arg0)
{
u8 taskId;
struct UnkStruct_Leader *dataPtr;
@ -2745,10 +2738,10 @@ void sub_8014A40(u8 taskId)
data->field_17 = sub_8016FC0(data->field_4, 0xFF);
winTemplate = gUnknown_082F011C;
winTemplate.baseBlock = sub_8019930();
winTemplate.baseBlock = GetMysteryGiftBaseBlock();
winTemplate.paletteNum = 0xC;
data->listWindowId = AddWindow(&winTemplate);
sub_8018784(data->listWindowId);
MG_DrawTextBorder(data->listWindowId);
gMultiuseListMenuTemplate = gUnknown_082F015C;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
@ -2763,7 +2756,7 @@ void sub_8014A40(u8 taskId)
data->state = 3;
break;
case 3:
sub_8018884(gStringVar4);
AddTextPrinterToWindow1(gStringVar4);
data->state = 4;
break;
case 4:
@ -2771,11 +2764,11 @@ void sub_8014A40(u8 taskId)
if (gMain.newKeys & B_BUTTON)
{
data->state = 13;
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
}
break;
case 6:
if (mevent_0814257C(&data->textState, gUnknown_082EDF40))
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_082EDF40))
{
data->field_13 = sub_8013398(data->field_0);
RedrawListMenu(data->listTaskId);
@ -2786,7 +2779,7 @@ void sub_8014A40(u8 taskId)
data->state = 7;
break;
case 7:
switch (sub_8018B08(&data->textState, &data->field_14, 0, gStringVar4))
switch (mevent_message_print_and_prompt_yes_no(&data->textState, &data->field_14, 0, gStringVar4))
{
case 0:
sub_800E0E8();
@ -2837,7 +2830,7 @@ void sub_8014A40(u8 taskId)
}
break;
case 9:
sub_8018884(gStringVar4);
AddTextPrinterToWindow1(gStringVar4);
data->state = 10;
break;
case 10:
@ -2860,7 +2853,7 @@ void sub_8014A40(u8 taskId)
}
break;
case 13:
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
sub_800EDD4();
DestroyListMenuTask(data->listTaskId, 0, 0);
CopyBgTilemapBufferToVram(0);
@ -2872,7 +2865,7 @@ void sub_8014A40(u8 taskId)
data->state++;
break;
case 14:
if (mevent_0814257C(&data->textState, gText_PleaseStartOver))
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gText_PleaseStartOver))
{
DestroyTask(taskId);
gSpecialVar_Result = 5;
@ -2907,7 +2900,7 @@ void sub_8014A40(u8 taskId)
}
}
void sub_8014EFC(u32 arg0)
void MEvent_CreateTask_CardOrNewsWithFriend(u32 arg0)
{
u8 taskId;
struct UnkStruct_Group *dataPtr;
@ -2940,7 +2933,7 @@ void sub_8014F48(u8 taskId)
data->state = 1;
break;
case 1:
sub_8018884(gUnknown_082EF7F8);
AddTextPrinterToWindow1(gUnknown_082EF7F8);
data->state = 2;
break;
case 2:
@ -2949,7 +2942,7 @@ void sub_8014F48(u8 taskId)
data->field_11 = sub_8016FC0(data->field_4, data->field_12 + 7);
winTemplate1 = gUnknown_082F0174;
winTemplate1.baseBlock = sub_8019930();
winTemplate1.baseBlock = GetMysteryGiftBaseBlock();
winTemplate1.paletteNum = 0xC;
data->listWindowId = AddWindow(&winTemplate1);
@ -2957,12 +2950,12 @@ void sub_8014F48(u8 taskId)
winTemplate2.paletteNum = 0xC;
data->field_D = AddWindow(&winTemplate2);
sub_8018784(data->listWindowId);
MG_DrawTextBorder(data->listWindowId);
gMultiuseListMenuTemplate = gUnknown_082F0204;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
sub_8018784(data->field_D);
MG_DrawTextBorder(data->field_D);
FillWindowPixelBuffer(data->field_D, PIXEL_FILL(1));
PutWindowTilemap(data->field_D);
sub_80125BC(data->field_D);
@ -3013,7 +3006,7 @@ void sub_8014F48(u8 taskId)
}
break;
case 4:
sub_8018884(gUnknown_082EFC3C);
AddTextPrinterToWindow1(gUnknown_082EFC3C);
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
data->state = 5;
break;
@ -3032,7 +3025,7 @@ void sub_8014F48(u8 taskId)
data->state = 8;
break;
case 5:
sub_8018884(gUnknown_082EDDF4);
AddTextPrinterToWindow1(gUnknown_082EDDF4);
sub_8011A64(0, 0);
break;
}
@ -3050,17 +3043,17 @@ void sub_8014F48(u8 taskId)
data->state++;
break;
case 9:
if (mevent_0814257C(&data->textState, gUnknown_082EDF80[sub_8011A74()]))
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_082EDF80[sub_8011A74()]))
{
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
sub_800EDD4();
gSpecialVar_Result = 5;
}
break;
case 7:
sub_800E084();
sub_8018884(gText_PleaseStartOver);
DestroyWirelessStatusIndicatorSprite();
AddTextPrinterToWindow1(gText_PleaseStartOver);
DestroyTask(taskId);
sub_800EDD4();
gSpecialVar_Result = 5;
@ -3076,7 +3069,7 @@ void sub_8014F48(u8 taskId)
}
}
void sub_80152A8(u32 arg0)
void MEvent_CreateTask_CardOrNewsOverWireless(u32 arg0)
{
u8 taskId;
struct UnkStruct_Group *dataPtr;
@ -3109,7 +3102,7 @@ void sub_80152F4(u8 taskId)
data->state = 1;
break;
case 1:
sub_8018884(gUnknown_082EFBC8);
AddTextPrinterToWindow1(gUnknown_082EFBC8);
data->state = 2;
break;
case 2:
@ -3120,10 +3113,10 @@ void sub_80152F4(u8 taskId)
if (data->field_13 != 0)
{
winTemplate = gUnknown_082F0174;
winTemplate.baseBlock = sub_8019930();
winTemplate.baseBlock = GetMysteryGiftBaseBlock();
data->listWindowId = AddWindow(&winTemplate);
sub_8018784(data->listWindowId);
MG_DrawTextBorder(data->listWindowId);
gMultiuseListMenuTemplate = gUnknown_082F0204;
gMultiuseListMenuTemplate.windowId = data->listWindowId;
data->listTaskId = ListMenuInit(&gMultiuseListMenuTemplate, 0, 0);
@ -3178,7 +3171,7 @@ void sub_80152F4(u8 taskId)
}
break;
case 4:
sub_8018884(gUnknown_082EFC90);
AddTextPrinterToWindow1(gUnknown_082EFC90);
sub_8018404(gStringVar1, &data->field_0->arr[data->field_F]);
data->state = 5;
break;
@ -3197,7 +3190,7 @@ void sub_80152F4(u8 taskId)
data->state = 8;
break;
case 5:
sub_8018884(gUnknown_082EDEC4);
AddTextPrinterToWindow1(gUnknown_082EDEC4);
sub_8011A64(0, 0);
break;
}
@ -3218,27 +3211,27 @@ void sub_80152F4(u8 taskId)
data->state++;
break;
case 9:
if (mevent_0814257C(&data->textState, gUnknown_082EDF04))
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_082EDF04))
{
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
sub_800EDD4();
gSpecialVar_Result = 5;
}
break;
case 7:
if (mevent_0814257C(&data->textState, gText_WirelessSearchCanceled))
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gText_WirelessSearchCanceled))
{
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
sub_800EDD4();
gSpecialVar_Result = 5;
}
break;
case 11:
if (mevent_0814257C(&data->textState, gUnknown_082EFD58[data->field_12]))
if (MG_PrintTextOnWindow1AndWaitButton(&data->textState, gUnknown_082EFD58[data->field_12]))
{
sub_800E084();
DestroyWirelessStatusIndicatorSprite();
DestroyTask(taskId);
sub_800EDD4();
gSpecialVar_Result = 5;
@ -4513,7 +4506,7 @@ s32 sub_8017178(u8 *arg0, u8 *arg1, u8 *arg2, const struct WindowTemplate *winTe
{
case 0:
winTemplateCopy = *winTemplate;
r1 = sub_81DB41C(menuTemplate);
r1 = Intl_GetListMenuWidth(menuTemplate);
if (winTemplateCopy.width > r1)
{
winTemplateCopy.width = r1;

631
src/union_room_battle.c Normal file
View File

@ -0,0 +1,631 @@
#include "global.h"
#include "battle.h"
#include "task.h"
#include "text.h"
#include "main.h"
#include "bg.h"
#include "palette.h"
#include "gpu_regs.h"
#include "alloc.h"
#include "menu.h"
#include "window.h"
#include "text_window.h"
#include "scanline_effect.h"
#include "m4a.h"
#include "dynamic_placeholder_text_util.h"
#include "overworld.h"
#include "strings.h"
#include "string_util.h"
#include "international_string_util.h"
#include "sound.h"
#include "constants/songs.h"
#include "party_menu.h"
#include "battle_setup.h"
#include "link.h"
#include "union_room.h"
#include "union_room_battle.h"
struct UnkStruct_3000DAC
{
/*0x00*/ u32 unk00[4];
/*0x10*/ u32 unk10[4];
/*0x20*/ u32 unk20[16];
/*0x60*/ u8 taskId;
/*0x61*/ u8 unk61;
/*0x62*/ u8 filler_62[10];
};
struct UnkStruct_2022C6C
{
s16 a0;
};
IWRAM_DATA struct UnkStruct_3000DAC * gUnknown_03000DAC;
IWRAM_DATA bool32 gUnknown_03000DB0;
EWRAM_DATA struct UnkStruct_2022C6C * gUnknown_02022C6C = NULL;
void sub_801A43C(void);
void sub_801A6C0(u8 taskId);
static void sub_801A8B0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 mode);
bool32 sub_801AA30(u32 * a0, u32 * a1, u32 * a2, u8 taskId);
const u16 gWirelessInfoScreenPal[] = INCBIN_U16("graphics/interface/wireless_info_screen.gbapal");
const u32 gWirelessInfoScreenGfx[] = INCBIN_U32("graphics/interface/wireless_info_screen.4bpp.lz");
const u32 gWirelessInfoScreenTilemap[] = INCBIN_U32("graphics/interface/wireless_info_screen.bin.lz");
const struct BgTemplate gUnknown_082F0D34[] = {
{
.bg = 0,
.charBaseIndex = 2,
.mapBaseIndex = 0x1F,
.priority = 0
}, {
.bg = 1,
.charBaseIndex = 0,
.mapBaseIndex = 0x08,
.priority = 1
}
};
const struct WindowTemplate gUnknown_082F0D3C[] = {
{
.bg = 0x00,
.tilemapLeft = 0x03,
.tilemapTop = 0x00,
.width = 0x18,
.height = 0x03,
.paletteNum = 0x0f,
.baseBlock = 0x0001
}, {
.bg = 0x00,
.tilemapLeft = 0x03,
.tilemapTop = 0x04,
.width = 0x15,
.height = 0x0f,
.paletteNum = 0x0f,
.baseBlock = 0x0049
}, {
.bg = 0x00,
.tilemapLeft = 0x18,
.tilemapTop = 0x04,
.width = 0x03,
.height = 0x0f,
.paletteNum = 0x0f,
.baseBlock = 0x0184
},
{ 0xFF }
};
const u8 *const gUnknown_082F0D5C[] = {
gText_WirelessCommStatus,
gText_PeopleTrading,
gText_PeopleBattling,
gText_PeopleInUnionRoom,
gText_PeopleCommunicating
};
const u8 gUnknown_082F0D70[][3] = {
{0x01, 0x01, 0x02},
{0x02, 0x01, 0x02},
{0x03, 0x01, 0x04},
{0x04, 0x00, 0x02},
{0x06, 0x03, 0x02},
{0x07, 0x03, 0x02},
{0x09, 0x03, 0x00},
{0x0a, 0x03, 0x00},
{0x0b, 0x03, 0x00},
{0x0c, 0xff, 0x00},
{0x0d, 0x00, 0x00},
{0x10, 0x03, 0x00},
{0x0f, 0x03, 0x00},
{0x40, 0x02, 0x01},
{0x41, 0x02, 0x02},
{0x44, 0x02, 0x02},
{0x45, 0x02, 0x00},
{0x48, 0x02, 0x02},
{0x54, 0x02, 0x01},
{0x53, 0x02, 0x02},
{0x51, 0x02, 0x01},
{0x52, 0x02, 0x01},
{0x15, 0x03, 0x02},
{0x16, 0x03, 0x02},
{0x17, 0x03, 0x00},
{0x18, 0x03, 0x00},
{0x19, 0x03, 0x00},
{0x1a, 0x03, 0x00},
{0x1b, 0x03, 0x00},
{0x1c, 0x01, 0x02},
{0x0e, 0x01, 0x02}
};
const struct BgTemplate gUnknown_082F0DD0[] = {
{
.bg = 0,
.charBaseIndex = 3,
.mapBaseIndex = 31
}
};
const struct WindowTemplate gUnknown_082F0DD4[] = {
{
.bg = 0,
.tilemapLeft = 3,
.tilemapTop = 15,
.width = 24,
.height = 4,
.paletteNum = 0xE,
.baseBlock = 0x014
},
{ 0xFF }
};
const u8 gUnknown_082F0DE4[] = { 1, 2, 3 };
void sub_801A3F4(void)
{
if (!IsDma3ManagerBusyWithBgCopy())
{
RunTasks();
RunTextPrinters();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
}
void sub_801A418(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
void sub_801A42C(void)
{
SetMainCallback2(sub_801A43C);
}
void sub_801A43C(void)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
gUnknown_03000DAC = AllocZeroed(sizeof(struct UnkStruct_3000DAC));
SetVBlankCallback(NULL);
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_082F0D34, ARRAY_COUNT(gUnknown_082F0D34));
SetBgTilemapBuffer(1, Alloc(0x800));
SetBgTilemapBuffer(0, Alloc(0x800));
DecompressAndLoadBgGfxUsingHeap(1, gWirelessInfoScreenGfx, 0, 0, 0);
CopyToBgTilemapBuffer(1, gWirelessInfoScreenTilemap, 0, 0);
InitWindows(gUnknown_082F0D3C);
DeactivateAllTextPrinters();
ResetPaletteFade();
ResetSpriteData();
ResetTasks();
ScanlineEffect_Stop();
m4aSoundVSyncOn();
SetVBlankCallback(sub_801A418);
gUnknown_03000DAC->taskId = CreateTask(sub_801A6C0, 0);
gUnknown_03000DAC->unk61 = sub_8013C40();
gUnknown_03000DAC->unk10[3] = 1;
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
LoadPalette(gWirelessInfoScreenPal, 0x00, 0x20);
Menu_LoadStdPalAt(0xF0);
DynamicPlaceholderTextUtil_Reset();
FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0x0F);
CopyBgTilemapBufferToVram(1);
SetMainCallback2(sub_801A3F4);
RunTasks();
RunTextPrinters();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
void sub_801A584(void)
{
s32 i;
FreeAllWindowBuffers();
for (i = 0; i < 2; i++)
{
Free(GetBgTilemapBuffer(i));
}
Free(gUnknown_03000DAC);
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
}
void sub_801A5BC(s16 * a0, s16 * a1)
{
if (++(*a0) > 5)
{
if (++(*a1) == 14)
{
*a1 = 0;
}
*a0 = 0;
}
LoadPalette(gWirelessInfoScreenPal + 16 * (*a1 + 2), 0, 0x10);
}
void sub_801A600(void)
{
s32 i;
FillWindowPixelBuffer(0, 0);
FillWindowPixelBuffer(1, 0);
FillWindowPixelBuffer(2, 0);
sub_801A8B0(0, 1, gUnknown_082F0D5C[0], GetStringCenterAlignXOffset(1, gUnknown_082F0D5C[0], 0xC0), 6, 3);
for (i = 0; i < 3; i++)
{
sub_801A8B0(1, 1, gUnknown_082F0D5C[i + 1], 0, 30 * i + 8, 1);
}
sub_801A8B0(1, 1, gUnknown_082F0D5C[i + 1], 0, 30 * i + 8, 2);
PutWindowTilemap(0);
CopyWindowToVram(0, 2);
PutWindowTilemap(1);
CopyWindowToVram(1, 2);
}
void sub_801A6C0(u8 taskId)
{
s32 i;
switch (gTasks[taskId].data[0])
{
case 0:
sub_801A600();
gTasks[taskId].data[0]++;
break;
case 1:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
ShowBg(1);
CopyBgTilemapBufferToVram(0);
ShowBg(0);
gTasks[taskId].data[0]++;
break;
case 2:
if (!gPaletteFade.active)
{
gTasks[taskId].data[0]++;
}
break;
case 3:
if (sub_801AA30(gUnknown_03000DAC->unk00, gUnknown_03000DAC->unk10, gUnknown_03000DAC->unk20, gUnknown_03000DAC->unk61))
{
FillWindowPixelBuffer(2, 0);
for (i = 0; i < 4; i++)
{
ConvertIntToDecimalStringN(gStringVar4, gUnknown_03000DAC->unk00[i], STR_CONV_MODE_RIGHT_ALIGN, 2);
if (i != 3)
{
sub_801A8B0(2, 1, gStringVar4, 12, 30 * i + 8, 1);
}
else
{
sub_801A8B0(2, 1, gStringVar4, 12, 98, 2);
}
}
PutWindowTilemap(2);
CopyWindowToVram(2, 3);
}
if (({gMain.newKeys & A_BUTTON;}) || ({gMain.newKeys & B_BUTTON;}))
{
PlaySE(SE_SELECT);
gTasks[gUnknown_03000DAC->unk61].data[15] = 0xFF;
gTasks[taskId].data[0]++;
}
sub_801A5BC(&gTasks[taskId].data[7], &gTasks[taskId].data[8]);
break;
case 4:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
gTasks[taskId].data[0]++;
break;
case 5:
if (!gPaletteFade.active)
{
SetMainCallback2(sub_801A584);
DestroyTask(taskId);
}
break;
}
}
static void sub_801A8B0(u8 windowId, u8 fontId, const u8 * str, u8 x, u8 y, u8 mode)
{
u8 color[3];
switch (mode)
{
case 0:
color[0] = 0;
color[1] = 2;
color[2] = 3;
break;
case 1:
color[0] = 0;
color[1] = 1;
color[2] = 3;
break;
case 2:
color[0] = 0;
color[1] = 4;
color[2] = 5;
break;
case 3:
color[0] = 0;
color[1] = 7;
color[2] = 6;
break;
case 4:
color[0] = 0;
color[1] = 1;
color[2] = 2;
break;
}
AddTextPrinterParameterized4(windowId, fontId, x, y, 0, 0, color, -1, str);
}
u32 sub_801A960(struct UnkStruct_x20 * a0, u32 * a1)
{
s32 i, j, r2;
u32 result = a0->unk.field_0.unk_0a_0;
for (i = 0; i < (unsigned)ARRAY_COUNT(gUnknown_082F0D70); i++)
{
if (result != gUnknown_082F0D70[i][0])
{
continue;
}
if (a0->field_1A_0 != 1)
{
continue;
}
if (gUnknown_082F0D70[i][2] == 0)
{
r2 = 0;
for (j = 0; j < 4; j++)
{
if (a0->unk.field_0.unk_04[j] != 0)
{
r2++;
}
}
r2++;
a1[gUnknown_082F0D70[i][1]] += r2;
}
else
{
a1[gUnknown_082F0D70[i][1]] += gUnknown_082F0D70[i][2];
}
}
return result;
}
bool32 sub_801AA08(u32 * a0, u32 * a1)
{
s32 i;
for (i = 0; i < 4; i++)
{
if (a0[i] != a1[i])
{
return TRUE;
}
}
return FALSE;
}
bool32 sub_801AA30(u32 * a0, u32 * a1, u32 * a2, u8 taskId)
{
bool32 r8 = FALSE;
u32 sp0[4] = {0, 0, 0, 0};
struct UnkStruct_x20 ** data = (void *)gTasks[taskId].data;
s32 i;
for (i = 0; i < 16; i++)
{
u32 r1 = sub_801A960(&(*data)[i], sp0);
if (r1 != a2[i])
{
a2[i] = r1;
r8 = TRUE;
}
}
if (sub_801AA08(sp0, a1) == 0)
{
if (r8 != TRUE)
{
return FALSE;
}
}
else
{
memcpy(a0, sp0, sizeof(sp0));
memcpy(a1, sp0, sizeof(sp0));
a0[3] = a0[0] + a0[1] + a0[2] + a0[3];
}
return TRUE;
}
void sub_801AAD4(void)
{
s32 i;
sub_8014210(10);
for (i = 0; i < 2; i++)
{
gEnemyParty[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1];
}
for (i = 0; i < 6; i++)
{
ZeroMonData(&gPlayerParty[i]);
}
for (i = 0; i < 2; i++)
{
gPlayerParty[i] = gEnemyParty[i];
}
IncrementGameStat(GAME_STAT_NUM_UNION_ROOM_BATTLES);
CalculatePlayerPartyCount();
gTrainerBattleOpponent_A = 0xC00;
SetMainCallback2(CB2_InitBattle);
}
void sub_801AB68(u8 windowId, const u8 * str, u8 x, u8 y, s32 speed)
{
s32 letterSpacing = 0;
s32 lineSpacing = 1;
FillWindowPixelBuffer(windowId, (gUnknown_082F0DE4[0] << 4) | gUnknown_082F0DE4[0]);
AddTextPrinterParameterized4(windowId, 1, x, y, letterSpacing, lineSpacing, gUnknown_082F0DE4, speed, str);
}
bool32 sub_801ABDC(s16 * state, const u8 * str, s32 speed)
{
switch (*state)
{
case 0:
DrawTextBorderOuter(0, 0x001, 0xD);
sub_801AB68(0, str, 0, 1, speed);
PutWindowTilemap(0);
CopyWindowToVram(0, 3);
(*state)++;
break;
case 1:
if (!IsTextPrinterActive(0))
{
*state = 0;
return TRUE;
}
break;
}
return FALSE;
}
void sub_801AC40(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
void sub_801AC54(void)
{
switch (gMain.state)
{
case 0:
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
gUnknown_02022C6C = AllocZeroed(4);
ResetSpriteData();
FreeAllSpritePalettes();
ResetTasks();
ResetBgsAndClearDma3BusyFlags(0);
InitBgsFromTemplates(0, gUnknown_082F0DD0, 1);
reset_temp_tile_data_buffers();
if (!InitWindows(gUnknown_082F0DD4))
{
return;
}
DeactivateAllTextPrinters();
ClearWindowTilemap(0);
FillWindowPixelBuffer(0, 0x00);
FillWindowPixelBuffer(0, 0x11);
FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 0xF);
LoadUserWindowBorderGfx(0, 1, 0xD0);
LoadUserWindowBorderGfx_(0, 1, 0xD0);
sub_819789C();
SetVBlankCallback(sub_801AC40);
gMain.state++;
break;
case 1:
if (sub_801ABDC(&gUnknown_02022C6C->a0, gText_CommStandbyAwaitingOtherPlayer, 0))
{
gMain.state++;
}
break;
case 2:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
ShowBg(0);
gMain.state++;
break;
case 3:
if (!UpdatePaletteFade())
{
memset(gBlockSendBuffer, 0, 0x20);
if (gSelectedOrderFromParty[0] == -gSelectedOrderFromParty[1])
{
gBlockSendBuffer[0] = 0x52;
}
else
{
gBlockSendBuffer[0] = 0x51;
}
SendBlock(0, gBlockSendBuffer, 0x20);
gMain.state++;
}
break;
case 4:
if (GetBlockReceivedStatus() == 3)
{
if (gBlockRecvBuffer[0][0] == 0x51 && gBlockRecvBuffer[1][0] == 0x51)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
gMain.state = 50;
}
else
{
sub_800AC34();
if (gBlockRecvBuffer[GetMultiplayerId()][0] == 0x52)
{
gMain.state = 6;
}
else
{
gMain.state = 8;
}
}
ResetBlockReceivedFlags();
}
break;
case 50:
if (!UpdatePaletteFade())
{
sub_800ADF8();
gMain.state++;
}
break;
case 51:
if (IsLinkTaskFinished())
{
SetMainCallback2(sub_801AAD4);
}
break;
case 6:
if (gReceivedRemoteLinkPlayers == 0)
{
gMain.state++;
}
break;
case 7:
if (sub_801ABDC(&gUnknown_02022C6C->a0, gText_RefusedBattle, 1))
{
SetMainCallback2(CB2_ReturnToField);
}
break;
case 8:
if (gReceivedRemoteLinkPlayers == 0)
{
gMain.state++;
}
break;
case 9:
if (sub_801ABDC(&gUnknown_02022C6C->a0, gText_BattleWasRefused, 1))
{
SetMainCallback2(CB2_ReturnToField);
}
break;
}
RunTasks();
RunTextPrinters();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}

View File

@ -2074,7 +2074,7 @@ static void sub_801FDDC(u8 left, u8 top, u8 initialCursorPos)
PutWindowTilemap(gUnknown_02022C88->unk18);
AddTextPrinterParameterized(gUnknown_02022C88->unk18, 1, gText_Yes, 8, 1, TEXT_SPEED_FF, NULL);
AddTextPrinterParameterized(gUnknown_02022C88->unk18, 1, gText_No, 8, 17, TEXT_SPEED_FF, NULL);
sub_8098858(gUnknown_02022C88->unk18, 1, 13);
DrawTextBorderOuter(gUnknown_02022C88->unk18, 1, 13);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(gUnknown_02022C88->unk18, 2, initialCursorPos);
}
}
@ -2140,7 +2140,7 @@ static void sub_801FF18(int arg0, u16 arg1)
PutWindowTilemap(windowId);
if (gUnknown_082F2D40[arg0].unk4 == 1)
{
sub_80989E0(windowId, 0xA, 2);
DrawTextBorderInner(windowId, 0xA, 2);
AddTextPrinterParameterized5(
windowId,
1,
@ -2154,7 +2154,7 @@ static void sub_801FF18(int arg0, u16 arg1)
}
else
{
sub_8098858(windowId, 0xA, 2);
DrawTextBorderOuter(windowId, 0xA, 2);
AddTextPrinterParameterized5(
windowId,
1,
@ -2316,7 +2316,7 @@ static bool32 sub_8020368(void)
static void sub_80203B0(void)
{
FillWindowPixelBuffer(3, PIXEL_FILL(1));
sub_8098858(3, 1, 13);
DrawTextBorderOuter(3, 1, 13);
PrintTextArray(3, 2, 8, 1, 14, 5, gUnknown_082F2DC8);
sub_81983AC(3, 2, 0, 1, 14, 5, sub_801F0B0());
PutWindowTilemap(3);

View File

@ -0,0 +1,611 @@
#include "global.h"
#include "constants/flags.h"
#include "constants/event_object_movement_constants.h"
#include "event_data.h"
#include "event_object_movement.h"
#include "script.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "union_room.h"
#include "task.h"
EWRAM_DATA struct UnkStruct_8019BA8 * gUnknown_02022C64 = NULL;
EWRAM_DATA u32 gUnknown_02022C68 = 0;
static u8 sub_8019DF4(void);
static u32 sub_8019F8C(u32 playerIdx, u32 arg1);
static void sub_801A3B0(s32 arg0, s32 arg1, u8 arg2);
ALIGNED(4) const u8 gUnknown_082F072C[][10] = {
{0x21, 0x2c, 0x1f, 0x23, 0x25, 0x24, 0x41, 0x42},
{0x22, 0x28, 0x20, 0x2f, 0x2f, 0x0e, 0x14, 0x2d}
};
static const s16 gUnknown_082F0740[][2] = {
{0x4, 0x6},
{0xd, 0x8},
{0xa, 0x6},
{0x1, 0x8},
{0xd, 0x4},
{0x7, 0x4},
{0x1, 0x4},
{0x7, 0x8}
};
static const s8 gUnknown_082F0760[][2] = {
{ 0, 0},
{ 1, 0},
{ 0, -1},
{-1, 0},
{ 0, 1}
};
static const u8 gUnknown_082F076A[] = {
0x00, 0x02, 0x01, 0x04, 0x03
};
static const u8 gUnknown_082F076F[] = {
0x01, 0x03, 0x01, 0x04, 0x02
};
static const u8 gUnknown_082F0774[] = {
0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03,
0xbf, 0x02, 0xc0, 0x02, 0xc1, 0x02, 0xc2, 0x02,
0xc3, 0x02, 0xc4, 0x02, 0xc5, 0x02, 0xc6, 0x02
};
static const u8 gUnknown_082F078C[2] = {
MOVEMENT_ACTION_FLY_UP,
MOVEMENT_ACTION_STEP_END
};
static const u8 gUnknown_082F078E[2] = {
MOVEMENT_ACTION_FLY_DOWN,
MOVEMENT_ACTION_STEP_END
};
static bool32 is_walking_or_running(void)
{
if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
static u8 sub_8019978(u32 a0, u32 a1)
{
return gUnknown_082F072C[a0][a1 % 8];
}
static void sub_8019990(u32 a0, u32 a1, s32 * a2, s32 * a3)
{
*a2 = gUnknown_082F0740[a0][0] + gUnknown_082F0760[a1][0] + 7;
*a3 = gUnknown_082F0740[a0][1] + gUnknown_082F0760[a1][1] + 7;
}
static bool32 sub_80199E0(u32 a0, u32 a1, s32 a2, s32 a3)
{
if (gUnknown_082F0740[a0][0] + gUnknown_082F0760[a1][0] + 7 != a2)
{
return FALSE;
}
else if (gUnknown_082F0740[a0][1] + gUnknown_082F0760[a1][1] + 7 != a3)
{
return FALSE;
}
else
{
return TRUE;
}
}
static bool32 IsUnionRoomPlayerHidden(u32 player_idx)
{
return FlagGet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
}
static void HideUnionRoomPlayer(u32 player_idx)
{
FlagSet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
}
static void ShowUnionRoomPlayer(u32 player_idx)
{
FlagClear(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
}
static void SetUnionRoomPlayerGfx(u32 playerIdx, u32 gfxId)
{
VarSet(VAR_OBJ_GFX_ID_0 + playerIdx, gfxId);
}
static void CreateUnionRoomPlayerEventObject(u32 playerIdx)
{
show_sprite(gUnknown_082F0774[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
static void RemoveUnionRoomPlayerEventObject(u32 playerIdx)
{
RemoveEventObjectByLocalIdAndMap(gUnknown_082F0774[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
}
static bool32 SetUnionRoomPlayerEnterExitMovement(u32 playerIdx, const u8 * movement)
{
u8 objectId;
struct EventObject * object;
if (TryGetEventObjectIdByLocalIdAndMap(gUnknown_082F0774[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
{
return FALSE;
}
object = &gEventObjects[objectId];
if (EventObjectIsMovementOverridden(object))
{
return FALSE;
}
if (EventObjectSetHeldMovement(object, *movement))
{
return FALSE;
}
return TRUE;
}
static bool32 sub_8019B3C(u32 playerIdx)
{
u8 objectId;
struct EventObject * object;
if (TryGetEventObjectIdByLocalIdAndMap(gUnknown_082F0774[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
{
return TRUE;
}
object = &gEventObjects[objectId];
if (!EventObjectClearHeldMovementIfFinished(object))
{
return FALSE;
}
if (!ScriptContext2_IsEnabled())
{
UnfreezeEventObject(object);
}
else
{
FreezeEventObject(object);
}
return TRUE;
}
u8 sub_8019BA8(struct UnkStruct_8019BA8 * ptr)
{
s32 i;
gUnknown_02022C68 = 0;
gUnknown_02022C64 = ptr;
for (i = 0; i < 8; i++)
{
ptr[i].field_0 = 0;
ptr[i].field_1 = 0;
ptr[i].field_2 = 0;
ptr[i].field_3 = 0;
}
return sub_8019DF4();
}
static bool32 sub_8019BDC(s8 * a0, u32 playerIdx, struct UnkStruct_8019BA8 * ptr)
{
switch (*a0)
{
case 0:
if (SetUnionRoomPlayerEnterExitMovement(playerIdx, gUnknown_082F078C) == TRUE)
{
HideUnionRoomPlayer(playerIdx);
(*a0)++;
}
break;
case 1:
if (sub_8019B3C(playerIdx))
{
RemoveUnionRoomPlayerEventObject(playerIdx);
HideUnionRoomPlayer(playerIdx);
*a0 = 0;
return TRUE;
}
break;
}
return FALSE;
}
static bool32 sub_8019C38(s8 * a0, u32 playerIdx, struct UnkStruct_8019BA8 * ptr)
{
s16 x, y;
switch (*a0)
{
case 0:
if (!is_walking_or_running())
{
break;
}
PlayerGetDestCoords(&x, &y);
if (sub_80199E0(playerIdx, 0, x, y) == 1)
{
break;
}
player_get_pos_including_state_based_drift(&x, &y);
if (sub_80199E0(playerIdx, 0, x, y) == 1)
{
break;
}
SetUnionRoomPlayerGfx(playerIdx, ptr->field_1);
CreateUnionRoomPlayerEventObject(playerIdx);
ShowUnionRoomPlayer(playerIdx);
(*a0)++;
// fallthrough
case 3: // incorrect?
if (SetUnionRoomPlayerEnterExitMovement(playerIdx, gUnknown_082F078E) == 1)
{
(*a0)++;
}
break;
case 2:
if (sub_8019B3C(playerIdx))
{
*a0 = 0;
return TRUE;
}
break;
}
return FALSE;
}
static bool32 sub_8019CF0(u32 playerIdx, u32 a1, u32 a2)
{
struct UnkStruct_8019BA8 * ptr = &gUnknown_02022C64[playerIdx];
ptr->field_3 = 1;
ptr->field_1 = sub_8019978(a1, a2);
if (ptr->field_0 == 0)
{
return TRUE;
}
else
{
return FALSE;
}
}
static bool32 sub_8019D20(u32 playerIdx)
{
struct UnkStruct_8019BA8 * ptr = &gUnknown_02022C64[playerIdx];
ptr->field_3 = 2;
if (ptr->field_0 == 1)
{
return TRUE;
}
else
{
return FALSE;
}
}
static void sub_8019D44(u32 playerIdx, struct UnkStruct_8019BA8 * ptr)
{
switch (ptr->field_0)
{
case 0:
if (ptr->field_3 == 1)
{
ptr->field_0 = 2;
ptr->field_2 = 0;
}
else
{
break;
}
// fallthrough
case 2:
if (!sub_8019F8C(playerIdx, 0) && ptr->field_3 == 2)
{
ptr->field_0 = 0;
ptr->field_2 = 0;
RemoveUnionRoomPlayerEventObject(playerIdx);
HideUnionRoomPlayer(playerIdx);
}
else if (sub_8019C38(&ptr->field_2, playerIdx, ptr) == 1)
{
ptr->field_0 = 1;
}
break;
case 1:
if (ptr->field_3 == 2)
{
ptr->field_0 = 3;
ptr->field_2 = 0;
}
else
{
break;
}
// fallthrough
case 3:
if (sub_8019BDC(&ptr->field_2, playerIdx, ptr) == 1)
{
ptr->field_0 = 0;
}
break;
}
ptr->field_3 = 0;
}
static void sub_8019DD0(u8 taskId)
{
s32 i;
for (i = 0; i < 8; i++)
{
sub_8019D44(i, &gUnknown_02022C64[i]);
}
}
static u8 sub_8019DF4(void)
{
if (FuncIsActiveTask(sub_8019DD0) == 1)
{
return NUM_TASKS;
}
else
{
return CreateTask(sub_8019DD0, 5);
}
}
static void sub_8019E20(void)
{
u8 taskId = FindTaskIdByFunc(sub_8019DD0);
if (taskId < NUM_TASKS)
{
DestroyTask(taskId);
}
}
void sub_8019E3C(void)
{
s32 i;
for (i = 0; i < 8; i++)
{
if (!IsUnionRoomPlayerHidden(i))
{
RemoveUnionRoomPlayerEventObject(i);
HideUnionRoomPlayer(i);
}
}
gUnknown_02022C64 = NULL;
sub_8019E20();
}
void sub_8019E70(u8 * sp8, s32 r9)
{
s32 r7;
for (r7 = 0; r7 < 5; r7++)
{
s32 r5 = 5 * r9 + r7;
sp8[r5] = sprite_new(0x41, r5 - 0x38, gUnknown_082F0740[r9][0] + gUnknown_082F0760[r7][0], gUnknown_082F0740[r9][1] + gUnknown_082F0760[r7][1], 3, 1);
sub_8097C44(r5 - 0x38, TRUE);
}
}
void sub_8019F04(u8 * r5)
{
s32 i;
for (i = 0; i < 40; i++)
{
DestroySprite(&gSprites[r5[i]]);
}
}
void sub_8019F2C(void)
{
s32 i, j, x, y;
for (i = 0; i < 8; i++)
{
for (j = 0; j < 5; j++)
{
sub_8019990(i, j, &x, &y);
sub_8088B94(x, y, 0);
}
}
}
static u8 sub_8019F64(u32 r1, u32 unused, struct UnkLinkRfuStruct_02022B14 * r2)
{
if (r1 != 0)
{
return gUnknown_082F076F[r1];
}
else if (r2->unk_0a_0 == 0x45)
{
return 1;
}
else
{
return 4;
}
}
static u32 sub_8019F8C(u32 a0, u32 a1)
{
return sub_8097C8C(5 * a0 + a1 - 0x38);
}
static void sub_8019FA4(u32 r5, u32 r6, u8 r8, struct UnkLinkRfuStruct_02022B14 * r9)
{
s32 x, y;
s32 r7 = 5 * r5 + r6;
if (sub_8019F8C(r5, r6) == 1)
{
sub_8097C44(r7 - 0x38, FALSE);
sub_8097CC4(r7 - 0x38, 1);
}
sub_8097BB4(r7 - 0x38, r8);
sub_801A3B0(r6, r5, sub_8019F64(r6, r5, r9));
sub_8019990(r5, r6, &x, &y);
sub_8088B94(x, y, 1);
}
static void sub_801A02C(u32 a0, u32 a1)
{
s32 x, y;
sub_8097CC4(5 * a0 + a1 - 0x38, 2);
sub_8019990(a0, a1, &x, &y);
sub_8088B94(x, y, 0);
}
static void sub_801A064(u32 r7, struct UnkLinkRfuStruct_02022B14 * r8)
{
s16 x, y, x2, y2;
s32 i;
PlayerGetDestCoords(&x, &y);
player_get_pos_including_state_based_drift(&x2, &y2);
if (sub_8097C8C(5 * r7 - 0x38) == 1)
{
if (sub_80199E0(r7, 0, x, y) == 1 || sub_80199E0(r7, 0, x2, y2) == 1)
{
return;
}
sub_8019FA4(r7, 0, sub_8019978(r8->playerGender, r8->unk_00.playerTrainerId[0]), r8);
}
for (i = 1; i < 5; i++)
{
if (r8->unk_04[i - 1] == 0)
{
sub_801A02C(r7, i);
}
else if (sub_80199E0(r7, i, x, y) == 0 && sub_80199E0(r7, i, x2, y2) == 0)
{
sub_8019FA4(r7, i, sub_8019978((r8->unk_04[i - 1] >> 3) & 1, r8->unk_04[i - 1] & 7), r8);
}
}
}
static void sub_801A16C(u32 r5, struct UnkLinkRfuStruct_02022B14 * r4)
{
u32 i;
switch (r4->unk_0a_0)
{
case 0x40:
case 0x54:
sub_8019CF0(r5, r4->playerGender, r4->unk_00.playerTrainerId[0]);
for (i = 0; i < 5; i++)
{
sub_801A02C(r5, i);
}
break;
case 0x41:
case 0x44:
case 0x45:
case 0x48:
case 0x51:
case 0x52:
case 0x53:
sub_8019D20(r5);
sub_801A064(r5, r4);
break;
}
}
static void sub_801A214(u32 r5, struct UnkLinkRfuStruct_02022B14 * unused)
{
s32 i;
sub_8019D20(r5);
for (i = 0; i < 5; i++)
{
sub_801A02C(r5, i);
}
}
static void sub_801A234(struct UnkStruct_URoom *r0)
{
s32 i;
struct UnkStruct_x20 * r4;
gUnknown_02022C68 = 0;
for (i = 0, r4 = r0->field_0->arr; i < 8; i++)
{
if (r4[i].field_1A_0 == 1)
{
sub_801A16C(i, &r4[i].unk.field_0);
}
else if (r4[i].field_1A_0 == 2)
{
sub_801A214(i, &r4[i].unk.field_0);
}
}
}
void sub_801A274(struct UnkStruct_URoom *unused)
{
gUnknown_02022C68 = 300;
}
void sub_801A284(struct UnkStruct_URoom *r2)
{
if (++gUnknown_02022C68 > 300)
{
sub_801A234(r2);
}
}
bool32 sub_801A2A8(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3)
{
s16 x, y;
s32 i, j;
struct UnkStruct_x20 * r4;
if (!is_walking_or_running())
{
return FALSE;
}
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
for (i = 0, r4 = arg0->arr; i < 8; i++)
{
for (j = 0; j < 5; j++)
{
s32 r3 = 5 * i + j;
if (x != gUnknown_082F0740[i][0] + gUnknown_082F0760[j][0] + 7)
{
continue;
}
if (y != gUnknown_082F0740[i][1] + gUnknown_082F0760[j][1] + 7)
{
continue;
}
if (sub_8097C8C(r3 - 0x38) != 0)
{
continue;
}
if (sub_8097D9C(r3 - 0x38) != 0)
{
continue;
}
if (r4[i].field_1A_0 != 1)
{
continue;
}
sub_801A3B0(j, i, gUnknown_082F076A[GetPlayerFacingDirection()]);
*arg1 = j;
*arg2 = i;
return TRUE;
}
}
return FALSE;
}
static void sub_801A3B0(s32 arg0, s32 arg1, u8 arg2)
{
sub_8097B78(5 * arg1 - 0x38 + arg0, arg2);
}
void sub_801A3D0(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2)
{
return sub_801A3B0(arg0, arg1, sub_8019F64(arg0, arg1, &arg2->arr[arg1].unk.field_0));
}

View File

@ -617,7 +617,7 @@ void sub_8166D44(void)
StringAppend(stringBuffer, gText_GetsAPokeBlockQuestion);
StringCopy(gStringVar4, stringBuffer);
FillWindowPixelBuffer(2, 17);
sub_8098858(2, 151, 14);
DrawTextBorderOuter(2, 151, 14);
AddTextPrinterParameterized(2, 1, gStringVar4, 0, 1, 0, NULL);
PutWindowTilemap(2);
CopyWindowToVram(2, 3);
@ -645,7 +645,7 @@ s8 sub_8166DE4(void)
void sub_8166E24(void)
{
sub_8098858(2, 151, 14);
DrawTextBorderOuter(2, 151, 14);
FillWindowPixelBuffer(2, 17);
for (gUnknown_0203BC90->field_53 = 0; gUnknown_0203BC90->field_53 < 5; gUnknown_0203BC90->field_53++)
@ -693,7 +693,7 @@ bool8 sub_8166EDC(void)
void sub_8166F50(void)
{
FillWindowPixelBuffer(2, 17);
sub_8098858(2, 151, 14);
DrawTextBorderOuter(2, 151, 14);
AddTextPrinterParameterized(2, 1, gText_WontEatAnymore, 0, 1, 0, NULL);
PutWindowTilemap(2);
CopyWindowToVram(2, 3);

View File

@ -8,6 +8,7 @@
.include "src/link.o"
.include "src/link_rfu.o"
.include "src/union_room.o"
.include "src/union_room_battle.o"
.include "src/rtc.o"
.include "src/main_menu.o"
.include "src/rom_8034C54.o"

View File

@ -8,32 +8,16 @@
.include "src/link_rfu.o"
.include "src/union_room.o"
.include "src/mystery_gift.o"
.align 3
gUnknown_02022C60: @ 2022C60
.space 0x4
gUnknown_02022C64: @ 2022C64
.space 0x4
gUnknown_02022C68: @ 2022C68
.space 0x4
gUnknown_02022C6C: @ 2022C6C
.space 0x4
.include "src/union_room_player_avatar.o"
.include "src/union_room_battle.o"
.include "src/mevent2.o"
.include "src/mevent_801BAAC.o"
gUnknown_02022C74: @ 2022C74
.space 0x4
gUnknown_02022C78: @ 2022C78
.space 0x4
@ mevent_server
gUnknown_02022C7C: @ 2022C7C
.space 0x4
gUnknown_02022C80: @ 2022C80
s_mevent_srv_ish_ptr: @ 2022C80
.space 0x4
gUnknown_02022C84: @ 2022C84
@ -148,11 +132,7 @@ gUnknown_02022D00: @ 2022D00
.include "src/decoration.o"
.include "src/slot_machine.o"
.include "src/battle_ai_script_commands.o"
.align 2
gPlayerFacingPosition: @ 203AB40
.space 0x8
.include "src/fldeff_misc.o"
.include "src/pokeblock.o"
.include "src/field_specials.o"
.include "src/battle_records.o"

View File

@ -160,7 +160,7 @@ int main(int argc, char *argv[])
// get filename
for (arg=1; arg<argc; arg++)
{
if ((ARGV[0] != '-')) { argfile=ARGV; }
if (ARGV[0] != '-') { argfile=ARGV; }
if (strncmp("--silent", &ARGV[0], 7) == 0) { silent = 1; }
}