This commit is contained in:
KDSKardabox 2018-02-18 17:35:36 +05:30
commit 5ed68a87f8
31 changed files with 6276 additions and 13911 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

2
common_syms/intro.txt Normal file
View File

@ -0,0 +1,2 @@
gIntroFrameCounter
gMultibootProgramStruct

File diff suppressed because it is too large Load Diff

View File

@ -1,529 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gIntro1DropsPal:: @ 85DFF90
.incbin "graphics/intro/intro1_drops.gbapal"
.align 2
gIntro1GFLogoPal:: @ 85DFFB0
.incbin "graphics/intro/intro1_gflogo.gbapal"
.align 2
gIntroTiles:: @ 85DFFD0
.incbin "graphics/intro/intro.4bpp.lz"
.align 2
gIntro1BGPals:: @ 85E05C4
.incbin "graphics/intro/intro1_bgpal.gbapal"
.align 2
gIntro1BG0_Tilemap:: @ 85E07C4
.incbin "graphics/intro/intro1_bg0_map.bin.lz"
.align 2
gIntro1BG1_Tilemap:: @ 85E0B78
.incbin "graphics/intro/intro1_bg1_map.bin.lz"
.align 2
gIntro1BG2_Tilemap:: @ 85E0EAC
.incbin "graphics/intro/intro1_bg2_map.bin.lz"
.align 2
gIntro1BG3_Tilemap:: @ 85E119C
.incbin "graphics/intro/intro1_bg3_map.bin.lz"
.align 2
gIntro1BGLeavesGfx:: @ 85E13B4
.incbin "graphics/intro/introgfx.4bpp.lz"
.align 2
gIntro3PokeballPal:: @ 85E3524
.incbin "graphics/intro/intro3_pokeball.gbapal"
.align 2
gIntro3Pokeball_Tilemap:: @ 85E3724
.incbin "graphics/intro/intro3_pokeball_map.bin.lz"
.align 2
gIntro3Pokeball_Gfx:: @ 85E3854
.incbin "graphics/intro/intro3_pokeball.8bpp.lz"
.align 2
.incbin "graphics/intro/intro3_streaks.gbapal"
.align 2
.incbin "graphics/intro/intro3_streaks.4bpp.lz"
.align 2
.incbin "graphics/intro/intro3_streaks_map.bin.lz"
.align 2
gIntro3Misc1Pal:: @ 85E4570
.incbin "graphics/intro/intro3_misc1.gbapal"
.align 2
.incbin "graphics/intro/intro3_misc2.gbapal"
.align 2
gIntro3MiscTiles:: @ 85E45B0
.incbin "graphics/intro/intro3_misc.4bpp.lz"
.align 2
gIntro1FlygonPal:: @ 85E492C
.incbin "graphics/intro/intro1_flygon.gbapal"
.align 2
.incbin "graphics/intro/intro1_eon.4bpp.lz"
.align 2
.byte 0x02, 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x06
.byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x02, 0x0d
.byte 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15
.byte 0x16, 0x17, 0x18, 0x19, 0x02, 0x0d, 0x0e, 0x0f
.byte 0x10, 0x11, 0x12, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e
.byte 0x1f, 0x20, 0x21, 0x02, 0x0d, 0x0e, 0x0f, 0x10
.byte 0x11, 0x12, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27
.byte 0x28, 0x29, 0x2a, 0x00
.align 2
gUnknown_085E4A74:: @ 85E4A74
obj_tiles gIntro1SparkleGfx, 0x0400, 0x05e1
null_obj_tiles
.align 2
gUnknown_085E4A84:: @ 85E4A84
obj_pal gIntro3LightningPal, 0x05e1
null_obj_pal
.align 2
gUnknown_085E4A94:: @ 85E4A94
.byte 0xa0, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00
.align 2
gUnknown_085E4A9C:: @ 85E4A9C
.2byte 0x0000, 0x0002, 0x0004, 0x0002, 0x0008, 0x0002, 0x000c, 0x0002, 0x0010, 0x0002, 0xfffe, 0x0000
.align 2
gUnknown_085E4AB4:: @ 85E4AB4
.4byte gUnknown_085E4A9C
.align 2
gUnknown_085E4AB8:: @ 85E4AB8
spr_template 0x05e1, 0x05e1, gUnknown_085E4A94, gUnknown_085E4AB4, NULL, gDummySpriteAffineAnimTable, sub_816D338
.align 2
gUnknown_085E4AD0:: @ 85E4AD0
.byte 0x7c, 0x28, 0x66, 0x1e, 0x4d, 0x1e, 0x36, 0x0f
.byte 0x94, 0x09, 0x3f, 0x1c, 0x5d, 0x28, 0x94, 0x20
.byte 0xad, 0x29, 0x5e, 0x14, 0xd0, 0x26, 0x00, 0x00
.align 2
gUnknown_085E4AE8:: @ 85E4AE8
obj_tiles gIntro2VolbeatGfx, 0x0400, 0x05dc
obj_tiles gIntro2TorchicGfx, 0x0c00, 0x05dd
obj_tiles gIntro2ManectricGfx, 0x2000, 0x05de
null_obj_tiles
.align 2
gUnknown_085E4B08:: @ 85E4B08
obj_pal gIntro2VolbeatPal, 0x05dc
obj_pal gIntro2TorchicPal, 0x05dd
obj_pal gIntro2ManectricPal, 0x05de
null_obj_pal
.align 2
gUnknown_085E4B28:: @ 85E4B28
.byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00
.align 2
gUnknown_085E4B30:: @ 85E4B30
.2byte 0x0000, 0x0002, 0x0010, 0x0002, 0xfffe, 0x0000
.align 2
gUnknown_085E4B3C:: @ 85E4B3C
.4byte gUnknown_085E4B30
.align 2
gUnknown_085E4B40:: @ 85E4B40
spr_template 0x05dc, 0x05dc, gUnknown_085E4B28, gUnknown_085E4B3C, NULL, gDummySpriteAffineAnimTable, sub_816D81C
.align 2
gUnknown_085E4B58:: @ 85E4B58
.byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00
.align 2
gUnknown_085E4B60:: @ 85E4B60
.2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0010, 0x0005, 0xfffe, 0x0000
.align 2
gUnknown_085E4B74:: @ 85E4B74
.2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0010, 0x0003, 0xfffe, 0x0000
.align 2
gUnknown_085E4B88:: @ 85E4B88
.2byte 0x0030, 0x0004, 0x0040, 0x0006, 0x0050, 0x0000, 0xffff, 0x0000
.align 2
gUnknown_085E4B98:: @ 85E4B98
.4byte gUnknown_085E4B60
.4byte gUnknown_085E4B74
.4byte gUnknown_085E4B88
.align 2
gUnknown_085E4BA4:: @ 85E4BA4
spr_template 0x05dd, 0x05dd, gUnknown_085E4B58, gUnknown_085E4B98, NULL, gDummySpriteAffineAnimTable, sub_816D9C0
.align 2
gUnknown_085E4BBC:: @ 85E4BBC
.byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00
.align 2
gUnknown_085E4BC4:: @ 85E4BC4
.2byte 0x0000, 0x0004, 0x0040, 0x0004, 0x0080, 0x0004, 0x00c0, 0x0004, 0xfffe, 0x0000
.align 2
gUnknown_085E4BD8:: @ 85E4BD8
.4byte gUnknown_085E4BC4
.align 2
gUnknown_085E4BDC:: @ 85E4BDC
spr_template 0x05de, 0x05de, gUnknown_085E4BBC, gUnknown_085E4BD8, NULL, gDummySpriteAffineAnimTable, sub_816DAE8
.align 2
gUnknown_085E4BF4:: @ 85E4BF4
obj_tiles gIntro3LightningGfx, 0x0c00, 0x05df
null_obj_tiles
.align 2
gUnknown_085E4C04:: @ 85E4C04
obj_pal gIntro3LightningPal, 0x05df
null_obj_pal
.align 2
gUnknown_085E4C14:: @ 85E4C14
.byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_085E4C1C:: @ 85E4C1C
.2byte 0x0000, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000
.align 2
gUnknown_085E4C28:: @ 85E4C28
.2byte 0x0010, 0x0002, 0x0040, 0x0002, 0xffff, 0x0000
.align 2
gUnknown_085E4C34:: @ 85E4C34
.2byte 0x0020, 0x0002, 0x0050, 0x0002, 0xffff, 0x0000
.align 2
gUnknown_085E4C40:: @ 85E4C40
.4byte gUnknown_085E4C1C
.4byte gUnknown_085E4C28
.4byte gUnknown_085E4C34
.align 2
gUnknown_085E4C4C:: @ 85E4C4C
spr_template 0x05df, 0x05df, gUnknown_085E4C14, gUnknown_085E4C40, NULL, gDummySpriteAffineAnimTable, sub_816EC6C
.align 2
gUnknown_085E4C64:: @ 85E4C64
.2byte 0x0068, 0x0000, 0x00c0, 0x008e, 0x0003, 0x0280, 0x0053, 0x0001
.2byte 0x0180, 0x009b, 0x0000, 0x0080, 0x0038, 0x0002, 0x0200, 0x00ae
.2byte 0x0001, 0x0100
.align 2
gUnknown_085E4C88:: @ 85E4C88
obj_tiles gIntro2BubblesGfx, 0x0600, 0x05e0
null_obj_tiles
.align 2
gUnknown_085E4C98:: @ 85E4C98
obj_pal gIntro2BubblesPal, 0x05e0
null_obj_pal
.align 2
gUnknown_085E4CA8:: @ 85E4CA8
.2byte 0x0042, 0x0040, 0x0001, 0x0060, 0x0060, 0x0008, 0x0080, 0x0040
.2byte 0x0001, 0x0090, 0x0030, 0x0008, 0x00a0, 0x0048, 0x0001, 0x00b0
.2byte 0x0060, 0x0008, 0x0060, 0x0060, 0x0004, 0x0070, 0x0068, 0x0008
.2byte 0x0080, 0x0060, 0x0004, 0x0058, 0x0020, 0x0004, 0x0068, 0x0018
.2byte 0x0008, 0x0078, 0x0020, 0x0004
.align 2
gUnknown_085E4CF0:: @ 85E4CF0
.byte 0xa0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_085E4CF8:: @ 85E4CF8
.2byte 0x0000, 0x0004, 0x0008, 0x0004, 0x0010, 0x0004, 0x0018, 0x0004
.2byte 0x0020, 0x0004, 0xffff, 0x0000
.align 2
gUnknown_085E4D10:: @ 85E4D10
.4byte gUnknown_085E4CF8
.align 2
gUnknown_085E4D14:: @ 85E4D14
spr_template 0x05e0, 0x05e0, gUnknown_085E4CF0, gUnknown_085E4D10, NULL, gDummySpriteAffineAnimTable, sub_816E7B4
.align 2
gUnknown_085E4D2C:: @ 85E4D2C
.byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_085E4D34:: @ 85E4D34
.2byte 0x0010, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4D3C:: @ 85E4D3C
.2byte 0x0018, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4D44:: @ 85E4D44
.2byte 0x0000, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4D4C:: @ 85E4D4C
.2byte 0x0030, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4D54:: @ 85E4D54
.4byte gUnknown_085E4D34
.4byte gUnknown_085E4D3C
.4byte gUnknown_085E4D44
.4byte gUnknown_085E4D4C
.align 2
gUnknown_085E4D64:: @ 85E4D64
spr_template 0x07d0, 0x07d0, gUnknown_085E4D2C, gUnknown_085E4D54, NULL, gDummySpriteAffineAnimTable, sub_816F454
.align 2
gUnknown_085E4D7C:: @ 85E4D7C
.byte 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00
.align 2
gUnknown_085E4D84:: @ 85E4D84
.2byte 0x0080, 0x0004, 0x00c0, 0x0004, 0xfffe, 0x0000
.align 2
gUnknown_085E4D90:: @ 85E4D90
.2byte 0x0000, 0x0008, 0x0040, 0x0008, 0x0080, 0x0008, 0x00c0, 0x0008, 0xfffe, 0x0000
.align 2
gUnknown_085E4DA4:: @ 85E4DA4
.2byte 0x0100, 0x0004, 0x0140, 0x0004, 0x0180, 0x0004, 0xffff, 0x0000
.align 2
gUnknown_085E4DB4:: @ 85E4DB4
.2byte 0x0180, 0x0010, 0x0140, 0x0010, 0x0100, 0x0010, 0xffff, 0x0000
.align 2
gUnknown_085E4DC4:: @ 85E4DC4
.4byte gUnknown_085E4D7C
.4byte gUnknown_085E4D90
.4byte gUnknown_085E4DA4
.4byte gUnknown_085E4DB4
.align 2
gUnknown_085E4DD4:: @ 85E4DD4
.2byte 0x03a0, 0x4000, 0x0000, 0x0000
.align 2
gUnknown_085E4DDC:: @ 85E4DDC
.2byte 0x00a0, 0x0000, 0x0000, 0x0000
.align 2
gUnknown_085E4DE4:: @ 85E4DE4
.2byte 0x87a0, 0xc000, 0x0000, 0x0000
.align 2
gUnknown_085E4DEC:: @ 85E4DEC
.2byte 0x0050, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4DF4:: @ 85E4DF4
.2byte 0x0054, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4DFC:: @ 85E4DFC
.2byte 0x0058, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E04:: @ 85E4E04
.2byte 0x005c, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E0C:: @ 85E4E0C
.2byte 0x0060, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E14:: @ 85E4E14
.2byte 0x0064, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E1C:: @ 85E4E1C
.2byte 0x0068, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E24:: @ 85E4E24
.2byte 0x0070, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E2C:: @ 85E4E2C
.2byte 0x0071, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E34:: @ 85E4E34
.2byte 0x0072, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E3C:: @ 85E4E3C
.2byte 0x0073, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E44:: @ 85E4E44
.2byte 0x0074, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E4C:: @ 85E4E4C
.2byte 0x0075, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E54:: @ 85E4E54
.2byte 0x0080, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E4E5C:: @ 85E4E5C
.4byte gUnknown_085E4DEC
.4byte gUnknown_085E4DF4
.4byte gUnknown_085E4DFC
.4byte gUnknown_085E4E04
.4byte gUnknown_085E4E0C
.4byte gUnknown_085E4E14
.4byte gUnknown_085E4E1C
.align 2
gUnknown_085E4E78:: @ 85E4E78
.4byte gUnknown_085E4E24
.4byte gUnknown_085E4E2C
.4byte gUnknown_085E4E34
.4byte gUnknown_085E4E3C
.4byte gUnknown_085E4E44
.4byte gUnknown_085E4E4C
.align 2
gUnknown_085E4E90:: @ 85E4E90
.4byte gUnknown_085E4E54
.align 2
gUnknown_085E4E94:: @ 85E4E94
.2byte 0x0000, 0xffb8, 0x0001, 0xffc8, 0x0002, 0xffd8, 0x0003, 0xffe8
.2byte 0x0004, 0x0008, 0x0005, 0x0018, 0x0003, 0x0028, 0x0001, 0x0038
.2byte 0x0006, 0x0048, 0x0000, 0xffe4, 0x0001, 0xffec, 0x0002, 0xfff4
.2byte 0x0003, 0xfffc, 0x0002, 0x0004, 0x0004, 0x000c, 0x0005, 0x0014
.2byte 0x0003, 0x001c
.align 2
gUnknown_085E4ED8:: @ 85E4ED8
.2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
.align 2
gUnknown_085E4EE8:: @ 85E4EE8
.2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0010, 0x0010, 0x1000, 0x0000
.2byte 0xfff0, 0xfff0, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
.align 2
gUnknown_085E4F08:: @ 85E4F08
.2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0008, 0x0008, 0x3000, 0x0000
.2byte 0x7fff, 0x0000, 0x0000, 0x0000
.align 2
gUnknown_085E4F20:: @ 85E4F20
.2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0002, 0x0002, 0x3000, 0x0000
.2byte 0x7fff, 0x0000, 0x0000, 0x0000
.align 2
gUnknown_085E4F38:: @ 85E4F38
.4byte gUnknown_085E4ED8
.4byte gUnknown_085E4EE8
.4byte gUnknown_085E4F08
.4byte gUnknown_085E4F20
.align 2
gUnknown_085E4F48:: @ 85E4F48
.2byte 0x0100, 0x00c0, 0x0080, 0x0040, 0x0000, 0x0040, 0x0080, 0x00c0
.2byte 0x0100, 0x0000
.align 2
gUnknown_085E4F5C:: @ 85E4F5C
spr_template 0x07d0, 0x07d1, gUnknown_085E4DD4, gUnknown_085E4E5C, NULL, gUnknown_085E4F38, sub_816FB38
spr_template 0x07d0, 0x07d1, gUnknown_085E4DDC, gUnknown_085E4E78, NULL, gDummySpriteAffineAnimTable, sub_816FB38
.align 2
gUnknown_085E4F8C:: @ 85E4F8C
spr_template 0x07d0, 0x07d1, gUnknown_085E4DE4, gUnknown_085E4E90, NULL, gUnknown_085E4F38, sub_816FD44
.align 2
gUnknown_085E4FA4:: @ 85E4FA4
.byte 0x00, 0x17, 0x17, 0x31, 0x3e, 0x24, 0x24, 0x0a, 0x0a, 0x00, 0x00, 0x00
.align 2
gUnknown_085E4FB0:: @ 85E4FB0
.byte 0xa0, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_085E4FB8:: @ 85E4FB8
.2byte 0x0000, 0x000a, 0xfffe, 0x0000
.align 2
gUnknown_085E4FC0:: @ 85E4FC0
.4byte gUnknown_085E4FB8
.align 2
gUnknown_085E4FC4:: @ 85E4FC4
spr_template 0x07d2, 0x07d2, gUnknown_085E4FB0, gUnknown_085E4FC0, NULL, gDummySpriteAffineAnimTable, sub_816FEDC
.align 2
gUnknown_085E4FDC:: @ 85E4FDC
obj_tiles gIntroTiles, 0x1400, 0x07d0
null_obj_tiles
gUnknown_085E4FEC:: @ 85E4FEC
obj_tiles gIntro1FlygonGfx, 0x0400, 0x07d2
null_obj_tiles
.align 2
gUnknown_085E4FFC:: @ 85E4FFC
obj_pal gIntro1DropsPal, 0x07d0
obj_pal gIntro1GFLogoPal, 0x07d1
obj_pal gIntro1FlygonPal, 0x07d2
null_obj_pal
.align 2
gUnknown_085E501C:: @ 85E501C
.byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_085E5024:: @ 85E5024
.2byte 0x0010, 0x0008, 0xffff, 0x0000
.align 2
gUnknown_085E502C:: @ 85E502C
.4byte gUnknown_085E5024
.align 2
gUnknown_085E5030:: @ 85E5030
spr_template 0x07d3, 0x07d3, gUnknown_085E501C, gUnknown_085E502C, NULL, gDummySpriteAffineAnimTable, sub_8170040
.align 2
gUnknown_085E5048:: @ 85E5048
obj_tiles gIntro3MiscTiles, 0x0a00, 0x07d3
null_obj_tiles
gUnknown_085E5058:: @ 85E5058
obj_pal gIntro3Misc1Pal, 0x07d3
null_obj_pal

View File

@ -1,459 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_085F06E0:: @ 85F06E0
.incbin "graphics/intro/intro2_grass.gbapal"
.align 2
gUnknown_085F0700:: @ 85F0700
.incbin "graphics/intro/intro2_grass_afternoon.gbapal"
.align 2
gUnknown_085F0720:: @ 85F0720
.incbin "graphics/intro/intro2_grass_night.gbapal"
.align 2
gUnknown_085F0740:: @ 85F0740
.incbin "graphics/intro/intro2_grass.4bpp.lz"
.align 2
gUnknown_085F0BC0:: @ 85F0BC0
.incbin "graphics/intro/intro2_grass_map.bin.lz"
.align 2
gUnknown_085F0CFC:: @ 85F0CFC
.incbin "graphics/intro/85F0CFC.gbapal"
.align 2
gUnknown_085F0D5C:: @ 85F0D5C
.incbin "graphics/intro/85F0D5C.gbapal"
.align 2
gUnknown_085F0DBC:: @ 85F0DBC
.incbin "graphics/intro/intro2_bgclouds.4bpp.lz"
.align 2
gUnknown_085F1398:: @ 85F1398
.incbin "graphics/intro/intro2_bgclouds_map.bin.lz"
.align 2
gUnknown_085F1668:: @ 85F1668
.incbin "graphics/intro/intro2_bgclouds.gbapal"
.align 2
gUnknown_085F1688:: @ 85F1688
.incbin "graphics/intro/intro2_bgclouds_afternoon.gbapal"
.align 2
gUnknown_085F16A8:: @ 85F16A8
.incbin "graphics/intro/intro2_bgclouds2.4bpp.lz"
.align 2
gUnknown_085F17E4:: @ 85F17E4
.incbin "graphics/intro/intro2_bgtrees2.gbapal"
.align 2
gUnknown_085F1804:: @ 85F1804
.incbin "graphics/intro/intro2_bgtrees2_afternoon.gbapal"
.align 2
gUnknown_085F1824:: @ 85F1824
.incbin "graphics/intro/intro2_bgtrees.4bpp.lz"
.align 2
gUnknown_085F1EAC:: @ 85F1EAC
.incbin "graphics/intro/intro2_bgtrees_map.bin.lz"
.align 2
gUnknown_085F21B0:: @ 85F21B0
.incbin "graphics/intro/intro2_bgtrees.gbapal"
.align 2
gIntro2TreeGfx:: @ 85F21D0
.incbin "graphics/intro/intro2_bgtreessmall.4bpp.lz"
.align 2
gUnknown_085F231C:: @ 85F231C
.incbin "graphics/intro/85F231C.gbapal"
.align 2
gUnknown_085F235C:: @ 85F235C
.incbin "graphics/intro/intro2_bgnight.4bpp.lz"
.align 2
gUnknown_085F2548:: @ 85F2548
.incbin "graphics/intro/intro2_bgnight.gbapal"
.align 2
gUnknown_085F2568:: @ 85F2568
.incbin "graphics/intro/intro2_bgnight_map.bin.lz"
.align 2
gIntro2NightGfx:: @ 85F2814
.incbin "graphics/intro/intro2_night.4bpp.lz"
.align 2
gIntro2BrendanPal:: @ 85F2898
.incbin "graphics/intro/intro2_brendan.gbapal"
.align 2
gIntro2BrendanGfx:: @ 85F28B8
.incbin "graphics/intro/intro2_brendan.4bpp.lz"
.align 2
gIntro2MayPal:: @ 85F3470
.incbin "graphics/intro/intro2_may.gbapal"
.align 2
gUnknown_085F3490:: @ 85F3490
.space 0x1E0
.align 2
gIntro2MayGfx:: @ 85F3670
.incbin "graphics/intro/intro2_may.4bpp.lz"
.align 2
gIntro2BicycleGfx:: @ 85F4318
.incbin "graphics/intro/intro2_bicycle.4bpp.lz"
.align 2
gIntro2LatiosPal:: @ 85F4744
.incbin "graphics/intro/intro2_latios.gbapal"
.align 2
gIntro2LatiosGfx:: @ 85F4764
.incbin "graphics/intro/intro2_latios.4bpp.lz"
.align 2
gIntro2LatiasPal:: @ 85F4C08
.incbin "graphics/intro/intro2_latias.gbapal"
.align 2
gIntro2LatiasGfx:: @ 85F4C28
.incbin "graphics/intro/intro2_latias.4bpp.lz"
.align 2
gUnknown_085F504C:: @ 85F504C
spr_template 0x07d0, 0xffff, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817B62C
.align 2
gUnknown_085F5064:: @ 85F5064
obj_tiles gUnknown_085F16A8, 0x0400, 0x07d0
null_obj_tiles
.align 2
gUnknown_085F5074:: @ 85F5074
obj_image_anim_frame 0, 30
obj_image_anim_end
.align 2
gUnknown_085F507C:: @ 85F507C
obj_image_anim_frame 16, 30
obj_image_anim_end
.align 2
gUnknown_085F5084:: @ 85F5084
obj_image_anim_frame 20, 30
obj_image_anim_end
.align 2
gUnknown_085F508C:: @ 85F508C
obj_image_anim_frame 22, 30
obj_image_anim_end
.align 2
gUnknown_085F5094:: @ 85F5094
.4byte gUnknown_085F5074
.4byte gUnknown_085F507C
.4byte gUnknown_085F5084
.4byte gUnknown_085F508C
.align 2
gUnknown_085F50A4:: @ 85F50A4
.byte -128, 72, 32, 100
.2byte 0xC00
.space 2
.byte -128, -98, 32, 100
.2byte 0xC00
.space 2
.byte 65, -64, 40, 101
.2byte 0x800
.space 2
.byte 65, 56, 40, 101
.2byte 0x800
.space 2
.byte 18, 100, 44, 102
.2byte 0x400
.space 2
.byte 18, -104, 44, 102
.2byte 0x400
.space 2
.byte 19, 8, 46, 103
.2byte 0x100
.space 2
.byte 19, 56, 46, 103
.2byte 0x100
.space 2
.byte 19, -16, 46, 103
.2byte 0x100
.space 2
.align 2
gUnknown_085F50EC:: @ 85F50EC
obj_tiles gIntro2TreeGfx, 0x0400, 0x07d0
null_obj_tiles
.align 2
gUnknown_085F50FC:: @ 85F50FC
obj_image_anim_frame 0, 30
obj_image_anim_end
.align 2
gUnknown_085F5104:: @ 85F5104
obj_image_anim_frame 16, 30
obj_image_anim_end
.align 2
gUnknown_085F510C:: @ 85F510C
obj_image_anim_frame 24, 30
obj_image_anim_end
.align 2
gUnknown_085F5114:: @ 85F5114
.4byte gUnknown_085F50FC
.4byte gUnknown_085F5104
.4byte gUnknown_085F510C
.align 2
gUnknown_085F5120:: @ 85F5120
.byte -128, 16, 88, 100
.2byte 0x2000
.space 2
.byte -128, 80, 88, 100
.2byte 0x2000
.space 2
.byte -128, -112, 88, 100
.2byte 0x2000
.space 2
.byte -128, -48, 88, 100
.2byte 0x2000
.space 2
.byte -95, 40, 88, 101
.2byte 0x1000
.space 2
.byte -95, 104, 88, 101
.2byte 0x1000
.space 2
.byte -95, -88, 88, 101
.2byte 0x1000
.space 2
.byte -95, -24, 88, 101
.2byte 0x1000
.space 2
.byte -94, 56, 88, 102
.2byte 0x800
.space 2
.byte -94, 120, 88, 102
.2byte 0x800
.space 2
.byte -94, -72, 88, 102
.2byte 0x800
.space 2
.byte -94, -8, 88, 102
.2byte 0x800
.space 2
.align 2
gUnknown_085F5180:: @ 85F5180
obj_tiles gIntro2NightGfx, 0x0400, 0x07d0
null_obj_tiles
.align 2
gUnknown_085F5190:: @ 85F5190
obj_image_anim_frame 0, 30
obj_image_anim_end
.align 2
gUnknown_085F5198:: @ 85F5198
.4byte gUnknown_085F5190
.align 2
gUnknown_085F519C:: @ 85F519C
.byte -128, 24, 88, 100
.2byte 0x1000
.space 2
.byte -128, 64, 88, 100
.2byte 0x1000
.space 2
.byte -128, 104, 88, 100
.2byte 0x1000
.space 2
.byte -128, -112, 88, 100
.2byte 0x1000
.space 2
.byte -128, -72, 88, 100
.2byte 0x1000
.space 2
.byte -128, -32, 88, 100
.2byte 0x1000
.space 2
.align 2
gOamData_85F51CC:: @ 85F51CC
.2byte 0x00A0
.2byte 0xC000
.2byte 0x0400
.align 2
gUnknown_085F51D4:: @ 85F51D4
obj_image_anim_frame 0, 8
obj_image_anim_frame 64, 8
obj_image_anim_frame 128, 8
obj_image_anim_frame 192, 8
obj_image_anim_jump 0
.align 2
gUnknown_085F51E8:: @ 85F51E8
.4byte gUnknown_085F51D4
.align 2
gUnknown_085F51EC:: @ 85F51EC
spr_template 0x03ea, 0x03ea, gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
.align 2
gUnknown_085F5204:: @ 85F5204
spr_template 0x03eb, 0x03eb, gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
.align 2
gUnknown_085F521C:: @ 85F521C
.2byte 0x40A0
.2byte 0xC000
.2byte 0x0400
.align 2
gUnknown_085F5224:: @ 85F5224
obj_image_anim_frame 0, 8
obj_image_anim_frame 32, 8
obj_image_anim_frame 64, 8
obj_image_anim_frame 96, 8
obj_image_anim_jump 0
.align 2
gUnknown_085F5238:: @ 85F5238
.4byte gUnknown_085F5224
.align 2
gUnknown_085F523C:: @ 85F523C
spr_template 0x03e9, 0x03ea, gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
.align 2
gUnknown_085F5254:: @ 85F5254
spr_template 0x03e9, 0x03eb, gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
.align 2
gUnknown_085F526C:: @ 85F526C
.2byte 0x00A0
.2byte 0xC000
.2byte 0x0400
.align 2
gUnknown_085F5274:: @ 85F5274
obj_image_anim_frame 0, 16
obj_image_anim_end
.align 2
gUnknown_085F527C:: @ 85F527C
obj_image_anim_frame 64, 16
obj_image_anim_end
.align 2
gUnknown_085F5284:: @ 85F5284
.4byte gUnknown_085F5274
.4byte gUnknown_085F527C
.align 2
gUnknown_085F528C:: @ 85F528C
spr_template 0x03ec, 0x03ec, gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
.align 2
gUnknown_085F52A4:: @ 85F52A4
spr_template 0x03ed, 0x03ed, gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
.align 2
gUnknown_085F52BC:: @ 85F52BC
obj_tiles gIntro2BrendanNoTurnGfx, 0x2000, 0x03ea
null_obj_tiles
.align 2
gUnknown_085F52CC:: @ 85F52CC
obj_tiles gIntro2MayNoTurnGfx, 0x2000, 0x03eb
null_obj_tiles
.align 2
gUnknown_085F52DC:: @ 85F52DC
obj_tiles gIntro2BicycleGfx, 0x1000, 0x03e9
null_obj_tiles
.align 2
gUnknown_085F52EC:: @ 85F52EC
obj_tiles gIntro2FlygonGfx, 0x1000, 0x03ec
null_obj_tiles
.align 2
gUnknown_085F52FC:: @ 85F52FC
obj_tiles gIntro2FlygonGfx, 0x1000, 0x03ed
null_obj_tiles
.align 2
gUnknown_085F530C:: @ 85F530C
obj_pal gIntro2BrendanNoTurnPal, 0x03ea
obj_pal gIntro2BrendanNoTurnPal, 0x03eb
obj_pal gIntro2FlygonPal, 0x03ec
obj_pal gIntro2FlygonPal, 0x03ed
null_obj_pal
.align 2
gUnknown_085F5334:: @ 85F5334
obj_tiles gIntro2BrendanGfx, 0x3800, 0x03ea
null_obj_tiles
.align 2
gUnknown_085F5344:: @ 85F5344
obj_tiles gIntro2MayGfx, 0x3800, 0x03eb
null_obj_tiles
.align 2
gUnknown_085F5354:: @ 85F5354
obj_tiles gIntro2BicycleGfx, 0x1000, 0x03e9
null_obj_tiles
.align 2
gUnknown_085F5364:: @ 85F5364
obj_tiles gIntro2LatiosGfx, 0x1000, 0x03ec
null_obj_tiles
.align 2
gUnknown_085F5374:: @ 85F5374
obj_tiles gIntro2LatiasGfx, 0x1000, 0x03ed
null_obj_pal
.align 2
gUnknown_085F5384:: @ 85F5384
obj_pal gIntro2BrendanPal, 0x03ea
obj_pal gIntro2MayPal, 0x03eb
obj_pal gIntro2LatiosPal, 0x03ec
obj_pal gIntro2LatiasPal, 0x03ed
null_obj_pal
.align 2
gUnknown_085F53AC:: @ 85F53AC
obj_tiles gIntro2BrendanGfx, 0x2000, 0x03ea
null_obj_tiles
.align 2
gUnknown_085F53BC:: @ 85F53BC
obj_tiles gIntro2MayGfx, 0x2000, 0x03eb
null_obj_tiles

11
include/credits.h Normal file
View File

@ -0,0 +1,11 @@
#ifndef GUARD_CREDITS_H
#define GUARD_CREDITS_H
// Exported type declarations
// Exported RAM declarations
extern EWRAM_DATA bool8 gHasHallOfFameRecords;
// Exported ROM declarations
#endif //GUARD_CREDITS_H

View File

@ -28,7 +28,6 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic); void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
extern u8 gDecompressionBuffer[];
u32 sub_8034974(const u8 *ptr); u32 sub_8034974(const u8 *ptr);
#endif // GUARD_DECOMPRESS_H #endif // GUARD_DECOMPRESS_H

View File

@ -624,23 +624,6 @@
#define TIMER_INTR_ENABLE 0x40 #define TIMER_INTR_ENABLE 0x40
#define TIMER_ENABLE 0x80 #define TIMER_ENABLE 0x80
// BGCNT
#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
#define BGCNT_MOSAIC 0x0040
#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
#define BGCNT_TXT512x256 0x4000
#define BGCNT_TXT256x512 0x8000
#define BGCNT_TXT512x512 0xC000
#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels.
#define BGCNT_AFF256x256 0x4000
#define BGCNT_AFF512x512 0x8000
#define BGCNT_AFF1024x1024 0xC000
// serial // serial
#define SIO_ID 0x0030 // Communication ID #define SIO_ID 0x0030 // Communication ID

View File

@ -35,6 +35,12 @@
// Converts a number to Q4.12 fixed-point format // Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096)) #define Q_4_12(n) ((s16)((n) * 4096))
// Converts a Q8.8 fixed-point format number to a regular integer
#define Q_8_8_TO_INT(n) ((int)((n) / 256))
// Converts a Q4.12 fixed-point format number to a regular integer
#define Q_4_12_TO_INT(n) ((int)((n) / 4096))
#define PARTY_SIZE 6 #define PARTY_SIZE 6
#define POKEMON_NAME_LENGTH 10 #define POKEMON_NAME_LENGTH 10

View File

@ -2725,4 +2725,49 @@ extern const u16 gBagScreenFemale_Pal[];
extern const u16 gBagScreenMale_Pal[]; extern const u16 gBagScreenMale_Pal[];
extern const u8 gBagMenuHMIcon_Gfx[]; extern const u8 gBagMenuHMIcon_Gfx[];
//intro graphics
extern const u8 gIntro1SparkleGfx[];
extern const u8 gIntro1FlygonGfx[];
extern const u16 gIntro3LightningPal[];
extern const u8 gIntroCopyright_Gfx[];
extern const u8 gIntroCopyright_Tilemap[];
extern const u16 gIntroCopyright_Pal[16];
extern const u8 gIntro2VolbeatGfx[];
extern const u8 gIntro2TorchicGfx[];
extern const u8 gIntro2ManectricGfx[];
extern const u16 gIntro2VolbeatPal[];
extern const u16 gIntro2TorchicPal[];
extern const u16 gIntro2ManectricPal[];
extern const u8 gIntro2BubblesGfx[];
extern const u16 gIntro2BubblesPal[];
extern const u8 gIntro3LightningGfx[];
extern const u8 gIntro3GroudonGfx[];
extern const u8 gIntro3GroudonTilemap[];
extern const u8 gIntro3LegendBgGfx[];
extern const u8 gIntro3GroudonBgTilemap[];
extern const u8 gIntro3GroudonBgTilemap[];
extern const u8 gIntro3BgPal[0x200];
extern const u8 gIntro3KyogreGfx[];
extern const u8 gIntro3KyogreTilemap[];
extern const u8 gIntro3KyogreBgTilemap[];
extern const u8 gIntro3CloudsGfx[];
extern const u8 gIntro3Clouds1Tilemap[];
extern const u8 gIntro3Clouds2Tilemap[];
extern const u8 gIntro3Clouds3Tilemap[];
extern const u8 gIntro3Clouds4Tilemap[];
extern const u8 gIntro3RayquazaTilemap[];
extern const u8 gIntro3RayquazaGfx[];
extern const u8 gIntro3Clouds2Gfx[];
extern const u16 gIntro1GameFreakTextFadePal[];
//intro/credits graphics
extern const u8 gIntro2BrendanNoTurnGfx[];
extern const u8 gIntro2MayNoTurnGfx[];
extern const u16 gIntro2BrendanNoTurnPal[];
extern const u16 gIntro2FlygonPal[];
extern const u8 gIntro2FlygonGfx[];
//credits
extern const u8 gCreditsCopyrightEnd_Gfx[];
#endif //GUARD_GRAPHICS_H #endif //GUARD_GRAPHICS_H

View File

@ -6,7 +6,7 @@
// Exported RAM declarations // Exported RAM declarations
// Exported ROM declarations // Exported ROM declarations
void c2_copyright_1(void); void CB2_InitCopyrightScreenAfterBootup(void);
void CB2_InitCopyrightScreenAfterBootup(void); void CB2_InitCopyrightScreenAfterBootup(void);
void CB2_InitCopyrightScreenAfterTitleScreen(void); void CB2_InitCopyrightScreenAfterTitleScreen(void);
void sub_816F2A8(u16, u16, u16, u16); void sub_816F2A8(u16, u16, u16, u16);

View File

@ -0,0 +1,30 @@
#ifndef GUARD_INTRO_CREDITS_GRAPHICS_H
#define GUARD_INTRO_CREDITS_GRAPHICS_H
extern u16 gUnknown_0203BD24;
extern s16 gUnknown_0203BD26;
extern s16 gUnknown_0203BD28;
extern const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[];
extern const struct CompressedSpriteSheet gIntro2MaySpriteSheet[];
extern const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[];
extern const struct CompressedSpriteSheet gIntro2FlygonSpriteSheet[];
extern const struct SpritePalette gUnknown_085F530C[];
extern const struct CompressedSpriteSheet gUnknown_085F5334[];
extern const struct CompressedSpriteSheet gUnknown_085F5344[];
extern const struct CompressedSpriteSheet gUnknown_085F5354[];
extern const struct CompressedSpriteSheet gUnknown_085F53AC[];
extern const struct CompressedSpriteSheet gUnknown_085F53BC[];
extern const struct SpritePalette gUnknown_085F5384[];
void load_intro_part2_graphics(u8 a);
void sub_817B150(u8 a);
void sub_817B1C8(u8);
void sub_817B3A8(u8);
u8 sub_817B3DC(u8 a, u16 b, u16 c, u16 d);
void sub_817B540(u8);
u8 intro_create_brendan_sprite(s16 a, s16 b);
u8 intro_create_may_sprite(s16 a, s16 b);
u8 intro_create_flygon_sprite(s16 a, s16 b);
#endif // GUARD_INTRO_CREDITS_GRAPHICS_H

17
include/libgcnmultiboot.h Normal file
View File

@ -0,0 +1,17 @@
#ifndef GUARD_LIBGCMMULTIBOOT_H
#define GUARD_LIBGCNMULTIBOOT_H
struct GcmbStruct
{
u16 gcmb_field_0;
vu8 gcmb_field_2;
u8 filler3[0x2C - 0x3];
};
void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct);
void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct);
void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct);
void GameCubeMultiBoot_Quit(void);
#endif // GUARD_LIBGCNMULTIBOOT_H

View File

@ -0,0 +1,6 @@
#ifndef GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H
#define GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H
extern const u16 gMultiBootProgram_PokemonColosseum_Start[0x14000];
#endif // GUARD_MULTIBOOT_POKEMON_COLOSSEUM_H

View File

@ -17,7 +17,6 @@ enum
}; };
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
u16 GetNationalPokedexCount(u8); u16 sub_80C0E9C(u16, s16, s16, u16);
u16 GetHoennPokedexCount(u8);
#endif // GUARD_POKEDEX_H #endif // GUARD_POKEDEX_H

View File

@ -47,19 +47,19 @@ enum
// Do save types // Do save types
enum enum
{ {
NORMAL_SAVE, SAVE_NORMAL,
LINK_SAVE, SAVE_LINK,
//EREADER_SAVE, // depreciated in Emerald //EREADER_SAVE, // deprecated in Emerald
LINK2_SAVE, // unknown 2nd link save SAVE_LINK2, // unknown 2nd link save
HOF_SAVE, SAVE_HALL_OF_FAME,
DIFFERENT_FILE_SAVE, SAVE_OVERWRITE_DIFFERENT_FILE,
HOF_DELETE_SAVE // unused SAVE_HALL_OF_FAME_ERASE_BEFORE // unused
}; };
#define SECTION_ID_RECORDED_BATTLE 31 #define SECTION_ID_RECORDED_BATTLE 31
void ClearSaveData(void); void ClearSaveData(void);
void ResetSaveCounters(void); void Save_ResetSaveCounters(void);
bool32 SetDamagedSectorBits(u8 op, u8 bit); bool32 SetDamagedSectorBits(u8 op, u8 bit);
u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location); u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location);
u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location); u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location);
@ -88,7 +88,7 @@ u8 sub_81533E0(void);
u8 sub_8153408(void); u8 sub_8153408(void);
u8 sub_8153430(void); u8 sub_8153430(void);
bool8 sub_8153474(void); bool8 sub_8153474(void);
u8 sub_81534D0(u8 a1); u8 Save_LoadGameData(u8 a1);
u16 sub_815355C(void); u16 sub_815355C(void);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst); u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 sub_8153634(u8 sector, u8* src); u32 sub_8153634(u8 sector, u8* src);

View File

@ -1,6 +1,11 @@
#ifndef GUARD_STARTER_CHOOSE_H #ifndef GUARD_STARTER_CHOOSE_H
#define GUARD_STARTER_CHOOSE_H #define GUARD_STARTER_CHOOSE_H
extern const u16 gBirchBagGrassPal[2][16];
extern const u8 gBirchBagTilemap[];
extern const u8 gBirchGrassTilemap[];
extern const u8 gBirchHelpGfx[];
u16 GetStarterPokemon(u16 chosenStarterId); u16 GetStarterPokemon(u16 chosenStarterId);
void CB2_ChooseStarter(void); void CB2_ChooseStarter(void);

View File

@ -218,12 +218,12 @@ SECTIONS {
asm/use_pokeblock.o(.text); asm/use_pokeblock.o(.text);
src/battle_controller_wally.o(.text); src/battle_controller_wally.o(.text);
asm/player_pc.o(.text); asm/player_pc.o(.text);
asm/intro.o(.text); src/intro.o(.text);
src/reset_save_heap.o(.text); src/reset_save_heap.o(.text);
src/field_region_map.o(.text); src/field_region_map.o(.text);
asm/battle_anim_8170478.o(.text); asm/battle_anim_8170478.o(.text);
src/hall_of_fame.o(.text); src/hall_of_fame.o(.text);
asm/credits.o(.text); src/credits.o(.text);
src/lottery_corner.o(.text); src/lottery_corner.o(.text);
src/diploma.o(.text); src/diploma.o(.text);
src/berry_tag_screen.o(.text); src/berry_tag_screen.o(.text);
@ -232,7 +232,7 @@ SECTIONS {
src/braille_puzzles.o(.text); src/braille_puzzles.o(.text);
src/pokeblock_feed.o(.text); src/pokeblock_feed.o(.text);
src/clear_save_data_screen.o(.text); src/clear_save_data_screen.o(.text);
asm/intro_credits_graphics.o(.text); src/intro_credits_graphics.o(.text);
src/evolution_graphics.o(.text); src/evolution_graphics.o(.text);
src/bard_music.o(.text); src/bard_music.o(.text);
src/fldeff_teleport.o(.text); src/fldeff_teleport.o(.text);
@ -494,11 +494,11 @@ SECTIONS {
data/use_pokeblock.o(.rodata); data/use_pokeblock.o(.rodata);
src/battle_controller_wally.o(.rodata); src/battle_controller_wally.o(.rodata);
data/player_pc.o(.rodata); data/player_pc.o(.rodata);
data/intro.o(.rodata); src/intro.o(.rodata);
src/field_region_map.o(.rodata); src/field_region_map.o(.rodata);
data/battle_anim_8170478.o(.rodata); data/battle_anim_8170478.o(.rodata);
src/hall_of_fame.o(.rodata); src/hall_of_fame.o(.rodata);
data/credits.o(.rodata); src/credits.o(.rodata);
src/lottery_corner.o(.rodata); src/lottery_corner.o(.rodata);
src/diploma.o(.rodata); src/diploma.o(.rodata);
data/strings.o(.rodata); data/strings.o(.rodata);
@ -508,7 +508,7 @@ SECTIONS {
data/braille_puzzles.o(.rodata); data/braille_puzzles.o(.rodata);
src/pokeblock_feed.o(.rodata); src/pokeblock_feed.o(.rodata);
src/clear_save_data_screen.o(.rodata); src/clear_save_data_screen.o(.rodata);
data/intro_credits_graphics.o(.rodata); src/intro_credits_graphics.o(.rodata);
src/evolution_graphics.o(.rodata); src/evolution_graphics.o(.rodata);
src/bard_music.o(.rodata); src/bard_music.o(.rodata);
data/battle_link_817C95C.o(.rodata); data/battle_link_817C95C.o(.rodata);

2355
src/credits.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -369,7 +369,7 @@ static const struct HallofFameMon sDummyFameMon =
0x3EA03EA, 0, 0, 0, {0} 0x3EA03EA, 0, 0, 0, {0}
}; };
static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5}; static const u8 sUnused2[] = {2, 1, 3, 6, 4, 5, 0, 0};
// code // code
static void VBlankCB_HallOfFame(void) static void VBlankCB_HallOfFame(void)
@ -516,7 +516,7 @@ static void Task_Hof_InitTeamSaveData(u8 taskId)
} }
else else
{ {
if (sub_81534D0(3) != TRUE) if (Save_LoadGameData(3) != TRUE)
memset(gDecompressionBuffer, 0, 0x2000); memset(gDecompressionBuffer, 0, 0x2000);
} }
@ -885,7 +885,7 @@ void CB2_DoHallOfFamePC(void)
static void Task_HofPC_CopySaveData(u8 taskId) static void Task_HofPC_CopySaveData(u8 taskId)
{ {
sub_81980F0(0, 0x1E, 0, 0xC, 0x226); sub_81980F0(0, 0x1E, 0, 0xC, 0x226);
if (sub_81534D0(3) != 1) if (Save_LoadGameData(3) != 1)
{ {
gTasks[taskId].func = Task_HofPC_PrintDataIsCorrupted; gTasks[taskId].func = Task_HofPC_PrintDataIsCorrupted;
} }

3020
src/intro.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,740 @@
#include "global.h"
#include "intro_credits_graphics.h"
#include "palette.h"
#include "decompress.h"
#include "gpu_regs.h"
#include "task.h"
#include "main.h"
#include "graphics.h"
struct IntroCreditsSpriteMetadata
{
u8 animNum:4;
u8 shape:2;
u8 size:2;
u8 x;
u8 y;
u8 subpriority;
u16 xOff;
};
static const u16 gUnknown_085F06E0[] = INCBIN_U16("graphics/intro/intro2_grass.gbapal");
static const u16 gUnknown_085F0700[] = INCBIN_U16("graphics/intro/intro2_grass_afternoon.gbapal");
static const u16 gUnknown_085F0720[] = INCBIN_U16("graphics/intro/intro2_grass_night.gbapal");
static const u8 gUnknown_085F0740[] = INCBIN_U8("graphics/intro/intro2_grass.4bpp.lz");
static const u8 gUnknown_085F0BC0[] = INCBIN_U8("graphics/intro/intro2_grass_map.bin.lz");
static const u16 gUnknown_085F0CFC[] = INCBIN_U16("graphics/intro/85F0CFC.gbapal");
static const u16 gUnknown_085F0D5C[] = INCBIN_U16("graphics/intro/85F0D5C.gbapal");
static const u8 gUnknown_085F0DBC[] = INCBIN_U8("graphics/intro/intro2_bgclouds.4bpp.lz");
static const u8 gUnknown_085F1398[] = INCBIN_U8("graphics/intro/intro2_bgclouds_map.bin.lz");
static const u16 gUnknown_085F1668[] = INCBIN_U16("graphics/intro/intro2_bgclouds.gbapal");
static const u16 gUnknown_085F1688[] = INCBIN_U16("graphics/intro/intro2_bgclouds_afternoon.gbapal");
static const u8 gUnknown_085F16A8[] = INCBIN_U8("graphics/intro/intro2_bgclouds2.4bpp.lz");
static const u16 gUnknown_085F17E4[] = INCBIN_U16("graphics/intro/intro2_bgtrees2.gbapal");
static const u16 gUnknown_085F1804[] = INCBIN_U16("graphics/intro/intro2_bgtrees2_afternoon.gbapal");
static const u8 gUnknown_085F1824[] = INCBIN_U8("graphics/intro/intro2_bgtrees.4bpp.lz");
static const u8 gUnknown_085F1EAC[] = INCBIN_U8("graphics/intro/intro2_bgtrees_map.bin.lz");
static const u16 gUnknown_085F21B0[] = INCBIN_U16("graphics/intro/intro2_bgtrees.gbapal");
static const u8 gIntro2TreeTiles[] = INCBIN_U8("graphics/intro/intro2_bgtreessmall.4bpp.lz");
static const u16 gUnknown_085F231C[] = INCBIN_U16("graphics/intro/85F231C.gbapal");
static const u8 gUnknown_085F235C[] = INCBIN_U8("graphics/intro/intro2_bgnight.4bpp.lz");
static const u16 gUnknown_085F2548[] = INCBIN_U16("graphics/intro/intro2_bgnight.gbapal");
static const u8 gUnknown_085F2568[] = INCBIN_U8("graphics/intro/intro2_bgnight_map.bin.lz");
static const u8 gIntro2NightTiles[] = INCBIN_U8("graphics/intro/intro2_night.4bpp.lz");
static const u16 gIntro2BrendanPalette[] = INCBIN_U16("graphics/intro/intro2_brendan.gbapal");
static const u8 gIntro2BrendanTiles[] = INCBIN_U8("graphics/intro/intro2_brendan.4bpp.lz");
static const u16 gIntro2MayPalette[] = INCBIN_U16("graphics/intro/intro2_may.gbapal");
static const u16 gUnknown_085F3490[0xF0] = {0};
static const u8 gIntro2MayTiles[] = INCBIN_U8("graphics/intro/intro2_may.4bpp.lz");
static const u8 gIntro2BicycleTiles[] = INCBIN_U8("graphics/intro/intro2_bicycle.4bpp.lz");
static const u16 gIntro2LatiosPalette[] = INCBIN_U16("graphics/intro/intro2_latios.gbapal");
static const u8 gIntro2LatiosTiles[] = INCBIN_U8("graphics/intro/intro2_latios.4bpp.lz");
static const u16 gIntro2LatiasPalette[] = INCBIN_U16("graphics/intro/intro2_latias.gbapal");
static const u8 gIntro2LatiasTiles[] = INCBIN_U8("graphics/intro/intro2_latias.4bpp.lz");
static void sub_817B62C(struct Sprite *sprite);
static void nullsub_65(struct Sprite *sprite);
static void sub_817B7C4(struct Sprite *sprite);
static void nullsub_66(struct Sprite *sprite);
static const struct SpriteTemplate gUnknown_085F504C = {
2000, 0xFFFF, &gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817B62C
};
static const struct CompressedSpriteSheet gUnknown_085F5064[] = {
{ gUnknown_085F16A8, 0x400, 2000 },
{ NULL }
};
static const union AnimCmd gUnknown_085F5074[] = {
ANIMCMD_FRAME( 0, 30),
ANIMCMD_END
};
static const union AnimCmd gUnknown_085F507C[] = {
ANIMCMD_FRAME(16, 30),
ANIMCMD_END
};
static const union AnimCmd gUnknown_085F5084[] = {
ANIMCMD_FRAME(20, 30),
ANIMCMD_END
};
static const union AnimCmd gUnknown_085F508C[] = {
ANIMCMD_FRAME(22, 30),
ANIMCMD_END
};
static const union AnimCmd *const gUnknown_085F5094[] = {
gUnknown_085F5074,
gUnknown_085F507C,
gUnknown_085F5084,
gUnknown_085F508C
};
static const struct IntroCreditsSpriteMetadata gUnknown_085F50A4[] = {
{ 0, ST_OAM_SQUARE, 2, 72, 32, 100, 0xc00 },
{ 0, ST_OAM_SQUARE, 2, 158, 32, 100, 0xc00 },
{ 1, ST_OAM_SQUARE, 1, 192, 40, 101, 0x800 },
{ 1, ST_OAM_SQUARE, 1, 56, 40, 101, 0x800 },
{ 2, ST_OAM_H_RECTANGLE, 0, 100, 44, 102, 0x400 },
{ 2, ST_OAM_H_RECTANGLE, 0, 152, 44, 102, 0x400 },
{ 3, ST_OAM_H_RECTANGLE, 0, 8, 46, 103, 0x100 },
{ 3, ST_OAM_H_RECTANGLE, 0, 56, 46, 103, 0x100 },
{ 3, ST_OAM_H_RECTANGLE, 0, 240, 46, 103, 0x100 },
};
static const struct CompressedSpriteSheet gUnknown_085F50EC[] = {
{ gIntro2TreeTiles, 0x400, 2000 },
{ NULL }
};
static const union AnimCmd gUnknown_085F50FC[] = {
ANIMCMD_FRAME( 0, 30),
ANIMCMD_END
};
static const union AnimCmd gUnknown_085F5104[] = {
ANIMCMD_FRAME(16, 30),
ANIMCMD_END
};
static const union AnimCmd gUnknown_085F510C[] = {
ANIMCMD_FRAME(24, 30),
ANIMCMD_END
};
static const union AnimCmd *const gUnknown_085F5114[] = {
gUnknown_085F50FC,
gUnknown_085F5104,
gUnknown_085F510C
};
static const struct IntroCreditsSpriteMetadata gUnknown_085F5120[] = {
{ 0, ST_OAM_SQUARE, 2, 16, 88, 100, 0x2000 },
{ 0, ST_OAM_SQUARE, 2, 80, 88, 100, 0x2000 },
{ 0, ST_OAM_SQUARE, 2, 144, 88, 100, 0x2000 },
{ 0, ST_OAM_SQUARE, 2, 208, 88, 100, 0x2000 },
{ 1, ST_OAM_V_RECTANGLE, 2, 40, 88, 101, 0x1000 },
{ 1, ST_OAM_V_RECTANGLE, 2, 104, 88, 101, 0x1000 },
{ 1, ST_OAM_V_RECTANGLE, 2, 168, 88, 101, 0x1000 },
{ 1, ST_OAM_V_RECTANGLE, 2, 232, 88, 101, 0x1000 },
{ 2, ST_OAM_V_RECTANGLE, 2, 56, 88, 102, 0x800 },
{ 2, ST_OAM_V_RECTANGLE, 2, 120, 88, 102, 0x800 },
{ 2, ST_OAM_V_RECTANGLE, 2, 184, 88, 102, 0x800 },
{ 2, ST_OAM_V_RECTANGLE, 2, 248, 88, 102, 0x800 },
};
static const struct CompressedSpriteSheet gUnknown_085F5180[] = {
{ gIntro2NightTiles, 0x400, 2000 },
{ NULL }
};
static const union AnimCmd gUnknown_085F5190[] = {
ANIMCMD_FRAME(0, 30),
ANIMCMD_END
};
static const union AnimCmd *const gUnknown_085F5198[] = {
gUnknown_085F5190
};
static const struct IntroCreditsSpriteMetadata gUnknown_085F519C[] = {
{ 0, ST_OAM_SQUARE, 2, 24, 88, 100, 0x1000 },
{ 0, ST_OAM_SQUARE, 2, 64, 88, 100, 0x1000 },
{ 0, ST_OAM_SQUARE, 2, 104, 88, 100, 0x1000 },
{ 0, ST_OAM_SQUARE, 2, 144, 88, 100, 0x1000 },
{ 0, ST_OAM_SQUARE, 2, 184, 88, 100, 0x1000 },
{ 0, ST_OAM_SQUARE, 2, 224, 88, 100, 0x1000 },
};
static const struct OamData gOamData_85F51CC = {
.y = 160, .shape = ST_OAM_SQUARE, .size = 3, .priority = 1
};
static const union AnimCmd gUnknown_085F51D4[] = {
ANIMCMD_FRAME( 0, 8),
ANIMCMD_FRAME( 64, 8),
ANIMCMD_FRAME(128, 8),
ANIMCMD_FRAME(192, 8),
ANIMCMD_JUMP(0)
};
static const union AnimCmd *const gUnknown_085F51E8[] = {
gUnknown_085F51D4
};
static const struct SpriteTemplate gUnknown_085F51EC = {
1002, 1002, &gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
};
static const struct SpriteTemplate gUnknown_085F5204 = {
1003, 1003, &gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
};
static const struct OamData gUnknown_085F521C = {
.y = 160, .shape = ST_OAM_H_RECTANGLE, .size = 3, .priority = 1
};
static const union AnimCmd gUnknown_085F5224[] = {
ANIMCMD_FRAME( 0, 8),
ANIMCMD_FRAME( 32, 8),
ANIMCMD_FRAME( 64, 8),
ANIMCMD_FRAME( 96, 8),
ANIMCMD_JUMP(0)
};
static const union AnimCmd *const gUnknown_085F5238[] = {
gUnknown_085F5224
};
static const struct SpriteTemplate gUnknown_085F523C = {
1001, 1002, &gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
};
static const struct SpriteTemplate gUnknown_085F5254 = {
1001, 1003, &gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
};
static const struct OamData gUnknown_085F526C = {
.y = 160, .shape = ST_OAM_SQUARE, .size = 3, .priority = 1
};
static const union AnimCmd gUnknown_085F5274[] = {
ANIMCMD_FRAME( 0, 16),
ANIMCMD_END
};
static const union AnimCmd gUnknown_085F527C[] = {
ANIMCMD_FRAME( 64, 16),
ANIMCMD_END
};
static const union AnimCmd *const gUnknown_085F5284[] = {
gUnknown_085F5274,
gUnknown_085F527C
};
static const struct SpriteTemplate gUnknown_085F528C = {
1004, 1004, &gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
};
static const struct SpriteTemplate gUnknown_085F52A4 = {
1005, 1005, &gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
};
const struct CompressedSpriteSheet gIntro2BrendanSpriteSheet[] = {
{ gIntro2BrendanNoTurnGfx, 0x2000, 1002 },
{ NULL }
};
const struct CompressedSpriteSheet gIntro2MaySpriteSheet[] = {
{ gIntro2MayNoTurnGfx, 0x2000, 1003 },
{ NULL }
};
const struct CompressedSpriteSheet gIntro2BicycleSpriteSheet[] = {
{ gIntro2BicycleTiles, 0x1000, 1001 },
{ NULL }
};
static const struct CompressedSpriteSheet gUnknown_085F52EC[] = {
{ gIntro2FlygonGfx, 0x1000, 1004 },
{ NULL }
};
const struct CompressedSpriteSheet gIntro2FlygonSpriteSheet[] = {
{ gIntro2FlygonGfx, 0x1000, 1005 },
{ NULL }
};
const struct SpritePalette gUnknown_085F530C[] = {
{ gIntro2BrendanNoTurnPal, 1002 },
{ gIntro2BrendanNoTurnPal, 1003 },
{ gIntro2FlygonPal, 1004 },
{ gIntro2FlygonPal, 1005 },
{ NULL }
};
const struct CompressedSpriteSheet gUnknown_085F5334[] = {
{ gIntro2BrendanTiles, 0x3800, 1002 },
{ NULL }
};
const struct CompressedSpriteSheet gUnknown_085F5344[] = {
{ gIntro2MayTiles, 0x3800, 1003 },
{ NULL }
};
const struct CompressedSpriteSheet gUnknown_085F5354[] = {
{ gIntro2BicycleTiles, 0x1000, 1001 },
{ NULL }
};
static const struct CompressedSpriteSheet gUnknown_085F5364[] = {
{ gIntro2LatiosTiles, 0x1000, 1004 },
{ NULL }
};
static const struct CompressedSpriteSheet gUnknown_085F5374[] = {
{ gIntro2LatiasTiles, 0x1000, 1005 },
{ NULL }
};
const struct SpritePalette gUnknown_085F5384[] = {
{ gIntro2BrendanPalette, 1002 },
{ gIntro2MayPalette, 1003 },
{ gIntro2LatiosPalette, 1004 },
{ gIntro2LatiasPalette, 1005 },
{ NULL }
};
const struct CompressedSpriteSheet gUnknown_085F53AC[] = {
{ gIntro2BrendanTiles, 0x2000, 1002},
{ NULL }
};
const struct CompressedSpriteSheet gUnknown_085F53BC[] = {
{ gIntro2MayTiles, 0x2000, 1003},
{ NULL }
};
EWRAM_DATA u16 gUnknown_0203BD24 = 0;
EWRAM_DATA s16 gUnknown_0203BD26 = 0;
EWRAM_DATA s16 gUnknown_0203BD28 = 0;
static void sub_817B76C(void);
static void sub_817B788(void);
static void sub_817B7A4(void);
static void sub_817B458(u8);
void load_intro_part2_graphics(u8 a)
{
LZ77UnCompVram(&gUnknown_085F0740, (void *)(VRAM + 0x4000));
LZ77UnCompVram(&gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
LoadPalette(&gUnknown_085F06E0, 240, 32);
switch (a)
{
case 0:
default:
LZ77UnCompVram(&gUnknown_085F0DBC, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_085F1398, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedObjectPic(gUnknown_085F5064);
LoadPalette(&gUnknown_085F1668, 256, 32);
sub_817B76C();
break;
case 1:
LZ77UnCompVram(&gUnknown_085F1824, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F17E4, 0, 32);
LoadCompressedObjectPic(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F21B0, 256, 32);
sub_817B788();
break;
}
gUnknown_0203BD28 = 0;
gReservedSpritePaletteCount = 8;
}
void sub_817B150(u8 a)
{
switch (a)
{
default:
case 0:
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(6)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(7)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1)
| BGCNT_CHARBASE(1)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(15)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG1_ON
| DISPCNT_BG2_ON
| DISPCNT_BG3_ON
| DISPCNT_OBJ_ON);
break;
case 1:
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(6)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(7)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1)
| BGCNT_CHARBASE(1)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(15)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG1_ON
| DISPCNT_BG2_ON
| DISPCNT_BG3_ON
| DISPCNT_OBJ_ON);
break;
case 2:
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(6)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(7)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1)
| BGCNT_CHARBASE(1)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(15)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG1_ON
| DISPCNT_BG2_ON
| DISPCNT_BG3_ON
| DISPCNT_OBJ_ON);
break;
}
}
void sub_817B1C8(u8 a)
{
LZ77UnCompVram(&gUnknown_085F0740, (void *)(VRAM + 0x4000));
LZ77UnCompVram(&gUnknown_085F0BC0, (void *)(VRAM + 0x7800));
switch (a)
{
case 0:
default:
LoadPalette(&gUnknown_085F06E0, 240, 32);
LZ77UnCompVram(&gUnknown_085F0DBC, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_085F1398, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F0CFC, 0, 96);
LoadCompressedObjectPic(gUnknown_085F5064);
LZ77UnCompVram(&gUnknown_085F16A8, (void *)(VRAM + 0x10000));
LoadPalette(&gUnknown_085F1668, 256, 32);
sub_817B76C();
break;
case 1:
LoadPalette(&gUnknown_085F0700, 240, 32);
LZ77UnCompVram(&gUnknown_085F0DBC, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_085F1398, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F0D5C, 0, 96);
LoadCompressedObjectPic(gUnknown_085F5064);
LZ77UnCompVram(&gUnknown_085F16A8, (void *)(VRAM + 0x10000));
LoadPalette(&gUnknown_085F1688, 256, 32);
sub_817B76C();
break;
case 2:
case 3:
LoadPalette(&gUnknown_085F0700, 240, 32);
LZ77UnCompVram(&gUnknown_085F1824, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_085F1EAC, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F1804, 0, 32);
LoadCompressedObjectPic(gUnknown_085F50EC);
LoadPalette(&gUnknown_085F1804, 256, 32);
sub_817B788();
break;
case 4:
LoadPalette(&gUnknown_085F0720, 240, 32);
LZ77UnCompVram(&gUnknown_085F235C, (void *)(VRAM));
LZ77UnCompVram(&gUnknown_085F2568, (void *)(VRAM + 0x3000));
LoadPalette(&gUnknown_085F231C, 0, 64);
LoadCompressedObjectPic(gUnknown_085F5180);
LoadPalette(&gUnknown_085F2548, 256, 32);
sub_817B7A4();
break;
}
gReservedSpritePaletteCount = 8;
gUnknown_0203BD28 = 0;
}
void sub_817B3A8(u8 a)
{
SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(6)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2)
| BGCNT_CHARBASE(0)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(7)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1)
| BGCNT_CHARBASE(1)
| BGCNT_16COLOR
| BGCNT_SCREENBASE(15)
| BGCNT_TXT256x256);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0
| DISPCNT_OBJ_1D_MAP
| DISPCNT_BG_ALL_ON
| DISPCNT_OBJ_ON);
}
u8 sub_817B3DC(u8 a, u16 b, u16 c, u16 d)
{
u8 taskId = CreateTask(&sub_817B458, 0);
gTasks[taskId].data[0] = a;
gTasks[taskId].data[1] = b;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[4] = c;
gTasks[taskId].data[5] = 0;
gTasks[taskId].data[6] = 0;
gTasks[taskId].data[7] = d;
gTasks[taskId].data[8] = 8;
gTasks[taskId].data[9] = 0;
sub_817B458(taskId);
return taskId;
}
static void sub_817B458(u8 taskId)
{
s16 data1;
s16 data4;
s16 data7;
s32 r2;
data1 = gTasks[taskId].data[1];
if (data1 != 0)
{
r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3];
r2 -= (u16)data1 << 4;
gTasks[taskId].data[2] = r2 >> 16;
gTasks[taskId].data[3] = r2;
SetGpuReg(REG_OFFSET_BG1HOFS, gTasks[taskId].data[2]);
SetGpuReg(REG_OFFSET_BG1VOFS, gUnknown_0203BD24 + gUnknown_0203BD26);
}
data4 = gTasks[taskId].data[4];
if (data4 != 0)
{
r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6];
r2 -= (u16)data4 << 4;
gTasks[taskId].data[5] = r2 >> 16;
gTasks[taskId].data[6] = r2;
SetGpuReg(REG_OFFSET_BG2HOFS, gTasks[taskId].data[5]);
if (gTasks[taskId].data[0] != 0)
SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_0203BD24 + gUnknown_0203BD26);
else
SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_0203BD24);
}
data7 = gTasks[taskId].data[7];
if (data7 != 0)
{
r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9];
r2 -= (u16)data7 << 4;
gTasks[taskId].data[8] = r2 >> 16;
gTasks[taskId].data[9] = r2;
SetGpuReg(REG_OFFSET_BG3HOFS, gTasks[taskId].data[8]);
SetGpuReg(REG_OFFSET_BG3VOFS, gUnknown_0203BD24);
}
}
void sub_817B540(u8 mode)
{
u16 x;
u16 y;
switch (mode)
{
case 0:
default:
/* stuff */
if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
break;
if (gMain.vblankCounter1 & 4)
{
x = gPlttBufferUnfaded[9];
y = gPlttBufferUnfaded[10];
}
else
{
x = gPlttBufferUnfaded[10];
y = gPlttBufferUnfaded[9];
}
LoadPalette(&x, 9, 2);
LoadPalette(&y, 10, 2);
break;
case 2:
if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
break;
if (gMain.vblankCounter1 & 4)
{
x = 0x3D27;
y = 0x295;
}
else
{
x = 0x31C;
y = 0x3D27;
}
LoadPalette(&x, 12, 2);
LoadPalette(&y, 13, 2);
break;
case 1:
break;
}
}
static void sub_817B62C(struct Sprite *sprite)
{
s32 var;
s16 var2 = gUnknown_0203BD28;
if (var2 != 2)
{
switch (var2)
{
default:
DestroySprite(sprite);
break;
case 0:
var = ((sprite->pos1.x << 16) | (u16)sprite->data[2]) + (u16)sprite->data[1];
sprite->pos1.x = var >> 16;
sprite->data[2] = var;
if (sprite->pos1.x > 0xFF)
sprite->pos1.x = -0x20;
if (sprite->data[0])
sprite->pos2.y = -(gUnknown_0203BD24 + gUnknown_0203BD26);
else
sprite->pos2.y = -gUnknown_0203BD24;
break;
}
}
}
static void sub_817B698(u8 a, const struct IntroCreditsSpriteMetadata *b, const union AnimCmd *const *c, u8 d)
{
u8 i;
for(i = 0; i < d; i++)
{
u8 sprite = CreateSprite(&gUnknown_085F504C, b[i].x, b[i].y, b[i].subpriority);
CalcCenterToCornerVec(&gSprites[sprite], b[i].shape, b[i].size, 0);
gSprites[sprite].oam.priority = 3;
gSprites[sprite].oam.shape = b[i].shape;
gSprites[sprite].oam.size = b[i].size;
gSprites[sprite].oam.paletteNum = 0;
gSprites[sprite].anims = c;
StartSpriteAnim(&gSprites[sprite], b[i].animNum);
gSprites[sprite].data[0] = a;
gSprites[sprite].data[1] = b[i].xOff;
gSprites[sprite].data[2] = 0;
}
}
static void sub_817B76C(void)
{
sub_817B698(0, gUnknown_085F50A4, gUnknown_085F5094, 9);
}
static void sub_817B788(void)
{
sub_817B698(1, gUnknown_085F5120, gUnknown_085F5114, 12);
}
static void sub_817B7A4(void)
{
sub_817B698(1, gUnknown_085F519C, gUnknown_085F5198, 6);
}
static void nullsub_65(struct Sprite *sprite)
{
}
static void sub_817B7C4(struct Sprite* sprite)
{
sprite->invisible = gSprites[sprite->data[0]].invisible;
sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
sprite->pos1.y = gSprites[sprite->data[0]].pos1.y + 8;
sprite->pos2.x = gSprites[sprite->data[0]].pos2.x;
sprite->pos2.y = gSprites[sprite->data[0]].pos2.y;
}
u8 intro_create_brendan_sprite(s16 a, s16 b)
{
u8 sprite = CreateSprite(&gUnknown_085F51EC, a, b, 2);
u8 brendan = CreateSprite(&gUnknown_085F523C, a, b + 8, 3);
gSprites[brendan].data[0] = sprite;
return sprite;
}
u8 intro_create_may_sprite(s16 a, s16 b)
{
u8 sprite = CreateSprite(&gUnknown_085F5204, a, b, 2);
u8 may = CreateSprite(&gUnknown_085F5254, a, b + 8, 3);
gSprites[may].data[0] = sprite;
return sprite;
}
static void nullsub_66(struct Sprite *sprite)
{
}
static void sub_817B8E8(struct Sprite* sprite)
{
sprite->invisible = gSprites[sprite->data[0]].invisible;
sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
sprite->pos2.x = gSprites[sprite->data[0]].pos2.x;
sprite->pos2.y = gSprites[sprite->data[0]].pos2.y;
}
static u8 sub_817B948(s16 a, s16 b)
{
u8 sprite = CreateSprite(&gUnknown_085F528C, a - 32, b, 5);
u8 latios = CreateSprite(&gUnknown_085F528C, a + 32, b, 6);
gSprites[latios].data[0] = sprite;
StartSpriteAnim(&gSprites[latios], 1);
gSprites[latios].callback = &sub_817B8E8;
return sprite;
}
u8 intro_create_flygon_sprite(s16 a, s16 b)
{
u8 sprite = CreateSprite(&gUnknown_085F52A4, a - 32, b, 5);
u8 flygon = CreateSprite(&gUnknown_085F52A4, a + 32, b, 6);
gSprites[flygon].data[0] = sprite;
StartSpriteAnim(&gSprites[flygon], 1);
gSprites[flygon].callback = &sub_817B8E8;
return sprite;
}

View File

@ -166,7 +166,7 @@ static void InitMainCallbacks(void)
gUnknown_0203CF5C = NULL; gUnknown_0203CF5C = NULL;
gMain.vblankCounter2 = 0; gMain.vblankCounter2 = 0;
gMain.callback1 = NULL; gMain.callback1 = NULL;
SetMainCallback2(c2_copyright_1); SetMainCallback2(CB2_InitCopyrightScreenAfterBootup);
gSaveBlock2Ptr = &gSaveblock2; gSaveBlock2Ptr = &gSaveblock2;
gPokemonStoragePtr = &gPokemonStorage; gPokemonStoragePtr = &gPokemonStorage;
} }

View File

@ -241,7 +241,7 @@ static void CB2_MysteryEventMenu(void)
u16 unkVal = RunMysteryEventScript(gDecompressionBuffer); u16 unkVal = RunMysteryEventScript(gDecompressionBuffer);
CpuFill32(0, gDecompressionBuffer, 0x7D4); CpuFill32(0, gDecompressionBuffer, 0x7D4);
if (!GetEventLoadMessage(gStringVar4, unkVal)) if (!GetEventLoadMessage(gStringVar4, unkVal))
TrySavingData(NORMAL_SAVE); TrySavingData(SAVE_NORMAL);
gMain.state++; gMain.state++;
} }
break; break;

View File

@ -20,8 +20,8 @@ void sub_81700F8(void)
gMain.inBattle = FALSE; gMain.inBattle = FALSE;
SetSaveBlocksPointers(sub_815355C()); SetSaveBlocksPointers(sub_815355C());
sub_808447C(); sub_808447C();
ResetSaveCounters(); Save_ResetSaveCounters();
sub_81534D0(0); Save_LoadGameData(0);
if (gSaveFileStatus == 0 || gSaveFileStatus == 2) if (gSaveFileStatus == 0 || gSaveFileStatus == 2)
Sav2_ClearSetDefault(); Sav2_ClearSetDefault();
SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);

View File

@ -3,6 +3,7 @@
#include "save.h" #include "save.h"
#include "constants/game_stat.h" #include "constants/game_stat.h"
#include "task.h" #include "task.h"
#include "decompress.h"
// for the chunk declarations // for the chunk declarations
extern struct SaveBlock2 gSaveblock2; extern struct SaveBlock2 gSaveblock2;
@ -96,7 +97,7 @@ void ClearSaveData(void)
} }
} }
void ResetSaveCounters(void) void Save_ResetSaveCounters(void)
{ {
gSaveCounter = 0; gSaveCounter = 0;
gLastWrittenSector = 0; gLastWrittenSector = 0;
@ -670,25 +671,25 @@ u8 HandleSavingData(u8 saveType)
UpdateSaveAddresses(); UpdateSaveAddresses();
switch (saveType) switch (saveType)
{ {
case HOF_DELETE_SAVE: // deletes HOF before overwriting HOF completely. unused case SAVE_HALL_OF_FAME_ERASE_BEFORE: // deletes HOF before overwriting HOF completely. unused
for (i = 0xE * 2 + 0; i < 32; i++) for (i = 0xE * 2 + 0; i < 32; i++)
EraseFlashSector(i); EraseFlashSector(i);
case HOF_SAVE: // hall of fame. case SAVE_HALL_OF_FAME: // hall of fame.
if (GetGameStat(GAME_STAT_ENTERED_HOF) < 999) if (GetGameStat(GAME_STAT_ENTERED_HOF) < 999)
IncrementGameStat(GAME_STAT_ENTERED_HOF); IncrementGameStat(GAME_STAT_ENTERED_HOF);
SaveSerializedGame(); SaveSerializedGame();
save_write_to_flash(0xFFFF, gRamSaveSectionLocations); save_write_to_flash(0xFFFF, gRamSaveSectionLocations);
tempAddr = (u8 *)0x201C000; // FIXME: make this a label. tempAddr = gDecompressionBuffer;
HandleWriteSectorNBytes(0x1C, tempAddr, 0xF80); HandleWriteSectorNBytes(0x1C, tempAddr, 0xF80);
HandleWriteSectorNBytes(0x1D, tempAddr + 0xF80, 0xF80); HandleWriteSectorNBytes(0x1D, tempAddr + 0xF80, 0xF80);
break; break;
case NORMAL_SAVE: // normal save. also called by overwriting your own save. case SAVE_NORMAL: // normal save. also called by overwriting your own save.
default: default:
SaveSerializedGame(); SaveSerializedGame();
save_write_to_flash(0xFFFF, gRamSaveSectionLocations); save_write_to_flash(0xFFFF, gRamSaveSectionLocations);
break; break;
case LINK_SAVE: // _081532C4 case SAVE_LINK: // _081532C4
case LINK2_SAVE: case SAVE_LINK2:
SaveSerializedGame(); SaveSerializedGame();
for(i = 0; i < 5; i++) for(i = 0; i < 5; i++)
ClearSaveData_2(i, gRamSaveSectionLocations); ClearSaveData_2(i, gRamSaveSectionLocations);
@ -702,7 +703,7 @@ u8 HandleSavingData(u8 saveType)
save_write_to_flash(0, gRamSaveSectionLocations); save_write_to_flash(0, gRamSaveSectionLocations);
break; break;
*/ */
case DIFFERENT_FILE_SAVE: case SAVE_OVERWRITE_DIFFERENT_FILE:
for (i = (0xE * 2 + 0); i < 32; i++) for (i = (0xE * 2 + 0); i < 32; i++)
EraseFlashSector(i); // erase HOF. EraseFlashSector(i); // erase HOF.
SaveSerializedGame(); SaveSerializedGame();
@ -799,7 +800,7 @@ bool8 sub_8153474(void)
return retVal; return retVal;
} }
u8 sub_81534D0(u8 a1) u8 Save_LoadGameData(u8 a1)
{ {
u8 result; u8 result;

View File

@ -25,12 +25,6 @@
#define STARTER_PKMN_POS_X 120 #define STARTER_PKMN_POS_X 120
#define STARTER_PKMN_POS_Y 64 #define STARTER_PKMN_POS_Y 64
// graphics
extern const u32 gBirchHelpGfx[];
extern const u32 gBirchBagTilemap[];
extern const u32 gBirchGrassTilemap[];
extern const u16 gBirchBagGrassPal[];
// text // text
extern const u8 gText_BirchInTrouble[]; extern const u8 gText_BirchInTrouble[];
extern const u8 gText_ConfirmStarterChoice[]; extern const u8 gText_ConfirmStarterChoice[];

View File

@ -142,7 +142,7 @@ gCB2_AfterEvolution: @ 30061E8
gUnknown_030061EC: @ 30061EC gUnknown_030061EC: @ 30061EC
.space 0x4 .space 0x4
.include"save.o" .include "save.o"
.space 0x8 .space 0x8
@ -155,11 +155,7 @@ gUnknown_03006294: @ 3006294
gUnknown_03006298: @ 3006298 gUnknown_03006298: @ 3006298
.space 0x8 .space 0x8
gUnknown_030062A0: @ 30062A0 .include "intro.o"
.space 0x10
gUnknown_030062B0: @ 30062B0
.space 0x2C
gUnknown_030062DC: @ 30062DC gUnknown_030062DC: @ 30062DC
.space 0x4 .space 0x4

View File

@ -824,34 +824,14 @@ gUnknown_0203BCBC: @ 203BCBC
gUnknown_0203BCC4: @ 203BCC4 gUnknown_0203BCC4: @ 203BCC4
.space 0x4 .space 0x4
gUnknown_0203BCC8: @ 203BCC8 .include "src/intro.o"
.space 0x4
gUnknown_0203BCCC: @ 203BCCC
.space 0x4
.include "src/field_region_map.o" .include "src/field_region_map.o"
gUnknown_0203BCD4: @ 203BCD4 gUnknown_0203BCD4: @ 203BCD4
.space 0x4 .space 0x4
.include "src/hall_of_fame.o" .include "src/hall_of_fame.o"
.include "src/credits.o"
gUnknown_0203BCE0: @ 203BCE0
.space 0x2
gUnknown_0203BCE2: @ 203BCE2
.space 0x2
gHasHallOfFameRecords: @ 203BCE4
.space 0x1
gUnknown_0203BCE5: @ 203BCE5
.space 0x3
gUnknown_0203BCE8: @ 203BCE8
.space 0x4
.include "src/lottery_corner.o" .include "src/lottery_corner.o"
.include "src/diploma.o" .include "src/diploma.o"
.include "src/berry_tag_screen.o" .include "src/berry_tag_screen.o"
@ -862,16 +842,7 @@ gBraillePuzzleCallbackFlag: @ 203BD14
.space 0x4 .space 0x4
.include "src/pokeblock_feed.o" .include "src/pokeblock_feed.o"
.include "src/intro_credits_graphics.o"
gUnknown_0203BD24: @ 203BD24
.space 0x2
gUnknown_0203BD26: @ 203BD26
.space 0x2
gUnknown_0203BD28: @ 203BD28
.space 0x4
.include "src/recorded_battle.o" .include "src/recorded_battle.o"
.include "src/battle_dome_cards.o" .include "src/battle_dome_cards.o"
.include "src/lilycove_lady.o" .include "src/lilycove_lady.o"