mirror of
https://github.com/pret/pokeruby.git
synced 2026-10-09 10:01:24 -04:00
Merge branch 'master' into decompile_battle_5
This commit is contained in:
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
-9164
File diff suppressed because it is too large
Load Diff
-1630
File diff suppressed because it is too large
Load Diff
-3402
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
-2739
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
gUnknown_03004830
|
||||
gInGameOpponentsNo
|
||||
gUnknown_03004840
|
||||
gBerryBlenderData
|
||||
@@ -0,0 +1 @@
|
||||
gEggHatchData
|
||||
@@ -1,456 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_08215C0C:: @ 8215C0C
|
||||
.incbin "graphics/berry_blender/center.gbapal"
|
||||
|
||||
.align 2
|
||||
gUnknown_08215C2C:: @ 8215C2C
|
||||
.incbin "graphics/berry_blender/center_map.bin"
|
||||
|
||||
.align 2
|
||||
gUnknown_0821602C:: @ 821602C
|
||||
.incbin "graphics/berry_blender/outer.gbapal"
|
||||
|
||||
.incbin "graphics/unused/unknown/821604C.gbapal"
|
||||
|
||||
.space 0x1C0
|
||||
|
||||
.string "▶$"
|
||||
.string " $"
|
||||
.string "カッコイ$" @ "cool" (missing an イ at the end)
|
||||
.string "カワイイ$" @ "cute"
|
||||
.string "ウツクシ$" @ "beautiful" (missing an イ at the end)
|
||||
.string "カシコイ$" @ "smart"
|
||||
.string "タクマシ$" @ "tough" (missing an イ at the end)
|
||||
|
||||
gUnknown_08216249:: @ 8216249
|
||||
.string "\p$"
|
||||
|
||||
@ unreferenced
|
||||
@ These appear to be the first names of four people who worked on the game.
|
||||
.string "てつじ$", 10 @ Tetsuji (Ohta)
|
||||
.string "あきと$", 10 @ Akito (Mori)
|
||||
.string "シゲル$", 10 @ Shigeru (Ohmori)
|
||||
.string "ヨシノリ$", 10 @ Yoshinori (Matsuda)
|
||||
|
||||
UnknownText_2Pok:
|
||||
.string "2Pok$"
|
||||
UnknownText_3Pok:
|
||||
.string "3Pok$"
|
||||
UnknownText_4Pok:
|
||||
.string "4Pok$"
|
||||
|
||||
.align 2
|
||||
gUnknown_08216284:: @ 8216284
|
||||
.4byte UnknownText_2Pok
|
||||
.4byte UnknownText_3Pok
|
||||
.4byte UnknownText_4Pok
|
||||
|
||||
@ unreferenced
|
||||
.string "1P$", 4
|
||||
.string "2P$", 4
|
||||
.string "3P$", 4
|
||||
.string "4P$", 4
|
||||
|
||||
.ifdef ENGLISH
|
||||
UnknownText_Mister:
|
||||
.string "MISTER$"
|
||||
UnknownText_Laddie:
|
||||
.string "LADDIE$"
|
||||
UnknownText_Lassie:
|
||||
.string "LASSIE$"
|
||||
.else
|
||||
UnknownText_Mister:
|
||||
.string "OPI$"
|
||||
UnknownText_Laddie:
|
||||
.string "KUMPEL$"
|
||||
UnknownText_Lassie:
|
||||
.string "TUSSI$"
|
||||
.endif
|
||||
|
||||
.align 2
|
||||
gUnknown_082162B8:: @ 82162B8
|
||||
.4byte UnknownText_Mister
|
||||
.4byte UnknownText_Laddie
|
||||
.4byte UnknownText_Lassie
|
||||
|
||||
gUnknown_082162C4:: @ 82162C4
|
||||
.string "{COLOR RED}$"
|
||||
|
||||
gUnknown_082162C8:: @ 82162C8
|
||||
.string "\n$"
|
||||
|
||||
.string " $"
|
||||
|
||||
gUnknown_082162CC:: @ 82162CC
|
||||
.byte -1, -1
|
||||
.byte 1, -1
|
||||
.byte -1, 1
|
||||
.byte 1, 1
|
||||
|
||||
gUnknown_082162D4:: @ 82162D4
|
||||
.byte 2, 6
|
||||
.byte 23, 6
|
||||
.byte 2, 12
|
||||
.byte 23, 12
|
||||
.byte 1, 6
|
||||
.byte 22, 6
|
||||
.byte 1, 12
|
||||
.byte 22, 12
|
||||
|
||||
gUnknown_082162E4:: @ 82162E4
|
||||
.byte 72, 32
|
||||
.byte 168, 32
|
||||
.byte 72, 128
|
||||
.byte 168, 128
|
||||
|
||||
gUnknown_082162EC:: @ 82162EC
|
||||
.byte -1, 0, 1, -1
|
||||
.byte -1, 0, 1, 2
|
||||
.byte 0, 1, 2, 3
|
||||
|
||||
.align 1
|
||||
gUnknown_082162F8:: @ 82162F8
|
||||
.2byte 0x0000, 0xC000, 0x4000, 0x8000
|
||||
|
||||
gUnknown_08216300:: @ 8216300
|
||||
.byte 1
|
||||
.byte 1
|
||||
.byte 0
|
||||
|
||||
gUnknown_08216303:: @ 8216303
|
||||
.byte 32
|
||||
.byte 224
|
||||
.byte 96
|
||||
.byte 160
|
||||
.byte 0
|
||||
|
||||
.align 2
|
||||
gUnknown_08216308:: @ 8216308
|
||||
.4byte sub_804F8C8
|
||||
.4byte sub_804F9F4
|
||||
.4byte sub_804FB1C
|
||||
|
||||
.align 2
|
||||
gOamData_8216314:: @ 8216314
|
||||
.2byte 0x0000
|
||||
.2byte 0x8000
|
||||
.2byte 0x0400
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821631C:: @ 821631C
|
||||
obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216324:: @ 8216324
|
||||
obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821632C:: @ 821632C
|
||||
obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216334:: @ 8216334
|
||||
obj_image_anim_frame 16, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821633C:: @ 821633C
|
||||
obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216350:: @ 8216350
|
||||
obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216364:: @ 8216364
|
||||
obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216378:: @ 8216378
|
||||
obj_image_anim_frame 48, 2
|
||||
obj_image_anim_frame 32, 5
|
||||
obj_image_anim_frame 48, 3
|
||||
obj_image_anim_frame 16, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821638C:: @ 821638C
|
||||
obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216394:: @ 8216394
|
||||
obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821639C:: @ 821639C
|
||||
obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_82163A4:: @ 82163A4
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_82163AC:: @ 82163AC
|
||||
.4byte gSpriteAnim_821631C
|
||||
.4byte gSpriteAnim_8216324
|
||||
.4byte gSpriteAnim_821632C
|
||||
.4byte gSpriteAnim_8216334
|
||||
.4byte gSpriteAnim_821633C
|
||||
.4byte gSpriteAnim_8216350
|
||||
.4byte gSpriteAnim_8216364
|
||||
.4byte gSpriteAnim_8216378
|
||||
.4byte gSpriteAnim_821638C
|
||||
.4byte gSpriteAnim_8216394
|
||||
.4byte gSpriteAnim_821639C
|
||||
.4byte gSpriteAnim_82163A4
|
||||
|
||||
.align 2
|
||||
gUnknown_082163DC:: @ 82163DC
|
||||
obj_tiles gBerryBlenderArrowTiles, 0x800, 46545
|
||||
|
||||
.align 2
|
||||
gUnknown_082163E4:: @ 82163E4
|
||||
obj_pal gBerryBlenderMiscPalette, 46546
|
||||
|
||||
.align 2
|
||||
gUnknown_082163EC:: @ 82163EC
|
||||
obj_pal gBerryBlenderArrowPalette, 12312
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_82163F4:: @ 82163F4
|
||||
spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04
|
||||
|
||||
.align 2
|
||||
gOamData_821640C:: @ 821640C
|
||||
.2byte 0x0000
|
||||
.2byte 0x4000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216414:: @ 8216414
|
||||
obj_image_anim_frame 0, 20
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821641C:: @ 821641C
|
||||
obj_image_anim_frame 4, 20, OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216424:: @ 8216424
|
||||
obj_image_anim_frame 8, 4
|
||||
obj_image_anim_frame 12, 4
|
||||
obj_image_anim_frame 8, 4
|
||||
obj_image_anim_frame 12, 4
|
||||
obj_image_anim_frame 8, 4
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821643C:: @ 821643C
|
||||
obj_image_anim_frame 8, 4
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_8216444:: @ 8216444
|
||||
.4byte gSpriteAnim_8216414
|
||||
.4byte gSpriteAnim_821641C
|
||||
.4byte gSpriteAnim_8216424
|
||||
.4byte gSpriteAnim_821643C
|
||||
|
||||
.align 2
|
||||
gUnknown_08216454:: @ 8216454
|
||||
obj_tiles gBerryBlenderMarubatsuTiles, 0x200, 48888
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_821645C:: @ 821645C
|
||||
spr_template 48888, 46546, gOamData_821640C, gSpriteAnimTable_8216444, NULL, gDummySpriteAffineAnimTable, sub_8051650
|
||||
|
||||
.align 2
|
||||
gOamData_8216474:: @ 8216474
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0400
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821647C:: @ 821647C
|
||||
obj_image_anim_frame 0, 3
|
||||
obj_image_anim_frame 1, 4
|
||||
obj_image_anim_frame 3, 5
|
||||
obj_image_anim_frame 1, 4
|
||||
obj_image_anim_frame 0, 3
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216494:: @ 8216494
|
||||
obj_image_anim_frame 0, 3
|
||||
obj_image_anim_frame 2, 4
|
||||
obj_image_anim_frame 4, 5
|
||||
obj_image_anim_frame 2, 4
|
||||
obj_image_anim_frame 0, 3
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_82164AC:: @ 82164AC
|
||||
obj_image_anim_frame 0, 2
|
||||
obj_image_anim_frame 1, 2
|
||||
obj_image_anim_frame 2, 2
|
||||
obj_image_anim_frame 4, 4
|
||||
obj_image_anim_frame 3, 3
|
||||
obj_image_anim_frame 2, 2
|
||||
obj_image_anim_frame 1, 2
|
||||
obj_image_anim_frame 0, 2
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_82164D0:: @ 82164D0
|
||||
obj_image_anim_frame 5, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_82164D8:: @ 82164D8
|
||||
obj_image_anim_frame 6, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_82164E0:: @ 82164E0
|
||||
.4byte gSpriteAnim_821647C
|
||||
.4byte gSpriteAnim_8216494
|
||||
.4byte gSpriteAnim_82164AC
|
||||
.4byte gSpriteAnim_82164D0
|
||||
.4byte gSpriteAnim_82164D8
|
||||
|
||||
.align 2
|
||||
gUnknown_082164F4:: @ 82164F4
|
||||
obj_tiles gBerryBlenderParticlesTiles, 0xE0, 23456
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_82164FC:: @ 82164FC
|
||||
spr_template 23456, 46546, gOamData_8216474, gSpriteAnimTable_82164E0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
.align 2
|
||||
gOamData_8216514:: @ 8216514
|
||||
.2byte 0x0000
|
||||
.2byte 0x8000
|
||||
.2byte 0x0400
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821651C:: @ 821651C
|
||||
obj_image_anim_frame 32, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216524:: @ 8216524
|
||||
obj_image_anim_frame 16, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_821652C:: @ 821652C
|
||||
obj_image_anim_frame 0, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_8216534:: @ 8216534
|
||||
.4byte gSpriteAnim_821651C
|
||||
.4byte gSpriteAnim_8216524
|
||||
.4byte gSpriteAnim_821652C
|
||||
|
||||
.align 2
|
||||
gUnknown_08216540:: @ 8216540
|
||||
obj_tiles gBerryBlenderCountdownNumbersTiles, 0x600, 12345
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_8216548:: @ 8216548
|
||||
spr_template 12345, 46546, gOamData_8216514, gSpriteAnimTable_8216534, NULL, gDummySpriteAffineAnimTable, sub_805181C
|
||||
|
||||
.align 2
|
||||
gOamData_8216560:: @ 8216560
|
||||
.2byte 0x4000
|
||||
.2byte 0xC000
|
||||
.2byte 0x0400
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8216568:: @ 8216568
|
||||
obj_image_anim_frame 0, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_8216570:: @ 8216570
|
||||
.4byte gSpriteAnim_8216568
|
||||
|
||||
.align 2
|
||||
gUnknown_08216574:: @ 8216574
|
||||
obj_tiles gBerryBlenderStartTiles, 0x400, 12346
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_821657C:: @ 821657C
|
||||
spr_template 12346, 46546, gOamData_8216560, gSpriteAnimTable_8216570, NULL, gDummySpriteAffineAnimTable, sub_80518CC
|
||||
|
||||
.align 1
|
||||
gUnknown_08216594:: @ 8216594
|
||||
.2byte -10, 20, 10, 2, 1
|
||||
.2byte 250, 20, 10, -2, 1
|
||||
.2byte -10, 140, 10, 2, -1
|
||||
.2byte 250, 140, 10, -2, -1
|
||||
|
||||
gUnknown_082165BC:: @ 82165BC
|
||||
.byte 4, 3, 2
|
||||
.byte 0, 4, 3
|
||||
.byte 1, 0, 4
|
||||
.byte 2, 1, 0
|
||||
.byte 3, 2, 1
|
||||
.byte 0, 2, 3
|
||||
.byte 1, 3, 4
|
||||
.byte 2, 4, 0
|
||||
.byte 3, 0, 1
|
||||
.byte 4, 1, 2
|
||||
|
||||
gUnknown_082165DA:: @ 82165DA
|
||||
.byte 1, 1, 2, 3, 4
|
||||
|
||||
gUnknown_082165DF:: @ 82165DF
|
||||
.byte 0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15
|
||||
|
||||
gUnknown_082165E9:: @ 82165E9
|
||||
.byte 6, 6, 6, 6, 5
|
||||
|
||||
gUnknown_082165EE:: @ 82165EE
|
||||
.byte 3, 3, 3, 2, 2
|
||||
|
||||
gUnknown_082165F3:: @ 82165F3
|
||||
.byte 3, 3, 3, 3, 2
|
||||
|
||||
gUnknown_082165F8:: @ 82165F8
|
||||
.string " $"
|
||||
|
||||
gOtherText_BPMAndDash:: @ 82165FA
|
||||
.string "BPM$"
|
||||
.string "-$"
|
||||
|
||||
gUnknown_08216600:: @ 8216600
|
||||
.string "\n$"
|
||||
|
||||
.string "\n$"
|
||||
@@ -1,122 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
EggPalette:: @ 8209AD8
|
||||
.incbin "graphics/pokemon/egg/palette.gbapal"
|
||||
|
||||
EggHatchTiles:: @ 8209AF8
|
||||
.incbin "graphics/misc/egg_hatch.4bpp"
|
||||
|
||||
EggShardTiles:: @ 820A2F8
|
||||
.incbin "graphics/misc/egg_shard.4bpp"
|
||||
|
||||
.align 2
|
||||
gOamData_820A378:: @ 820A378
|
||||
.2byte 0x0000
|
||||
.2byte 0x8000
|
||||
.2byte 0x0400
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A380:: @ 820A380
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A388:: @ 820A388
|
||||
obj_image_anim_frame 16, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A390:: @ 820A390
|
||||
obj_image_anim_frame 32, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A398:: @ 820A398
|
||||
obj_image_anim_frame 48, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_820A3A0:: @ 820A3A0
|
||||
.4byte gSpriteAnim_820A380
|
||||
.4byte gSpriteAnim_820A388
|
||||
.4byte gSpriteAnim_820A390
|
||||
.4byte gSpriteAnim_820A398
|
||||
|
||||
.align 2
|
||||
gUnknown_0820A3B0:: @ 820A3B0
|
||||
obj_tiles EggHatchTiles, 2048, 12345
|
||||
|
||||
.align 2
|
||||
gUnknown_0820A3B8:: @ 820A3B8
|
||||
obj_tiles EggShardTiles, 128, 23456
|
||||
|
||||
.align 2
|
||||
gUnknown_0820A3C0:: @ 820A3C0
|
||||
obj_pal EggPalette, 54321
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_820A3C8:: @ 820A3C8
|
||||
spr_template 12345, 54321, gOamData_820A378, gSpriteAnimTable_820A3A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
|
||||
.align 2
|
||||
gOamData_820A3E0:: @ 820A3E0
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0800
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A3E8:: @ 820A3E8
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A3F0:: @ 820A3F0
|
||||
obj_image_anim_frame 1, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A3F8:: @ 820A3F8
|
||||
obj_image_anim_frame 2, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_820A400:: @ 820A400
|
||||
obj_image_anim_frame 3, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_820A408:: @ 820A408
|
||||
.4byte gSpriteAnim_820A3E8
|
||||
.4byte gSpriteAnim_820A3F0
|
||||
.4byte gSpriteAnim_820A3F8
|
||||
.4byte gSpriteAnim_820A400
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_820A418:: @ 820A418
|
||||
spr_template 23456, 54321, gOamData_820A3E0, gSpriteAnimTable_820A408, NULL, gDummySpriteAffineAnimTable, SpriteCB_EggShard
|
||||
|
||||
@ The values are Q8.8 fixed-point numbers.
|
||||
.align 1
|
||||
gEggShardVelocities:: @ 820A430
|
||||
.2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
|
||||
.2byte 0xFB00, 0xFD00 @ (-5, -3)
|
||||
.2byte 0x0380, 0xFD00 @ (3.5, -3)
|
||||
.2byte 0xFC00, 0xFC40 @ (-4, -3.75)
|
||||
.2byte 0x0200, 0xFE80 @ (2, -1.5)
|
||||
.2byte 0xFF80, 0xF940 @ (-0.5, -6.75)
|
||||
.2byte 0x0500, 0xFDC0 @ (5, -2.25)
|
||||
.2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
|
||||
.2byte 0x0480, 0xFE80 @ (4.5, -1.5)
|
||||
.2byte 0xFF00, 0xF940 @ (-1, -6.75)
|
||||
.2byte 0x0400, 0xFDC0 @ (4, -2.25)
|
||||
.2byte 0xFC80, 0xFC40 @ (-3.5, -3.75)
|
||||
.2byte 0x0100, 0xFE80 @ (1, -1.5)
|
||||
.2byte 0xFC7C, 0xF940 @ (-3.515625, -6.75)
|
||||
.2byte 0x0480, 0xFDC0 @ (4.5, -2.25)
|
||||
.2byte 0xFF80, 0xF880 @ (-0.5, -7.5)
|
||||
.2byte 0x0100, 0xFB80 @ (1, -4.5)
|
||||
.2byte 0xFD80, 0xFDC0 @ (-2.5, -2.25)
|
||||
.2byte 0x0280, 0xF880 @ (2.5, -7.5)
|
||||
@@ -1,230 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_0840B514:: @ 840B514
|
||||
obj_tiles gContestConfetti_Gfx, 0x220, 1001
|
||||
.space 8
|
||||
|
||||
gUnknown_0840B524:: @ 840B524
|
||||
obj_pal gContestConfetti_Pal, 1001
|
||||
.space 8
|
||||
|
||||
.align 2
|
||||
gUnknown_0840B534:: @ 840B534
|
||||
.2byte 120,210,120, 40
|
||||
.2byte 326,220, 56, 40
|
||||
.2byte -86,220,184, 40
|
||||
.2byte 120,-62,120, 88
|
||||
.2byte -25,-62,200, 88
|
||||
.2byte 265,-62, 40, 88
|
||||
|
||||
.align 2
|
||||
gUnknown_0840B564:: @ 840B564
|
||||
.2byte 120,214,120, 64
|
||||
.2byte 281,214, 56, 64
|
||||
.2byte -41,214,184, 64
|
||||
|
||||
.align 2
|
||||
gUnknown_0840B57C:: @ 840B57C
|
||||
.2byte 1002
|
||||
.2byte 1002
|
||||
.space 0x10
|
||||
|
||||
@ unused data?
|
||||
.byte 2, 1, 3, 6, 4, 5
|
||||
|
||||
.align 2
|
||||
gOamData_840B598:: @ 840B598
|
||||
.2byte 0x0000
|
||||
.2byte 0xC000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gUnknown_0840B5A0:: @ 840B5A0
|
||||
.4byte 0x02008000
|
||||
.4byte 0x0200A000
|
||||
.4byte 0x0200C000
|
||||
.4byte 0x0200E000
|
||||
.4byte 0x02010000
|
||||
.4byte 0x02014000
|
||||
.4byte 0x02018000
|
||||
|
||||
.align 2
|
||||
gSpriteImageTable_840B5BC:: @ 840B5BC
|
||||
obj_frame_tiles 0x02008000, 0x800
|
||||
obj_frame_tiles 0x02008800, 0x800
|
||||
obj_frame_tiles 0x02009000, 0x800
|
||||
obj_frame_tiles 0x02009800, 0x800
|
||||
|
||||
.align 2
|
||||
gSpriteImageTable_840B5DC:: @ 840B5DC
|
||||
obj_frame_tiles 0x0200A000, 0x800
|
||||
obj_frame_tiles 0x0200A800, 0x800
|
||||
obj_frame_tiles 0x0200B000, 0x800
|
||||
obj_frame_tiles 0x0200B800, 0x800
|
||||
|
||||
.align 2
|
||||
gSpriteImageTable_840B5FC:: @ 840B5FC
|
||||
obj_frame_tiles 0x0200C000, 0x800
|
||||
obj_frame_tiles 0x0200C800, 0x800
|
||||
obj_frame_tiles 0x0200D000, 0x800
|
||||
obj_frame_tiles 0x0200D800, 0x800
|
||||
|
||||
.align 2
|
||||
gSpriteImageTable_840B61C:: @ 840B61C
|
||||
obj_frame_tiles 0x0200E000, 0x800
|
||||
obj_frame_tiles 0x0200E800, 0x800
|
||||
obj_frame_tiles 0x0200F000, 0x800
|
||||
obj_frame_tiles 0x0200F800, 0x800
|
||||
|
||||
.align 2
|
||||
gSpriteImageTable_840B63C:: @ 840B63C
|
||||
obj_frame_tiles 0x02010000, 0x800
|
||||
obj_frame_tiles 0x02010800, 0x800
|
||||
obj_frame_tiles 0x02011000, 0x800
|
||||
obj_frame_tiles 0x02011800, 0x800
|
||||
|
||||
.align 2
|
||||
gSpriteImageTable_840B65C:: @ 840B65C
|
||||
obj_frame_tiles 0x02014000, 0x800
|
||||
obj_frame_tiles 0x02014800, 0x800
|
||||
obj_frame_tiles 0x02015000, 0x800
|
||||
obj_frame_tiles 0x02015800, 0x800
|
||||
|
||||
.align 2
|
||||
gSpriteImageTable_840B67C:: @ 840B67C
|
||||
obj_frame_tiles 0x02018000, 0x800
|
||||
obj_frame_tiles 0x02018800, 0x800
|
||||
obj_frame_tiles 0x02019000, 0x800
|
||||
obj_frame_tiles 0x02019800, 0x800
|
||||
|
||||
.align 2
|
||||
gUnknown_0840B69C:: @ 840B69C
|
||||
.4byte gSpriteImageTable_840B5BC
|
||||
.4byte gSpriteImageTable_840B5DC
|
||||
.4byte gSpriteImageTable_840B5FC
|
||||
.4byte gSpriteImageTable_840B61C
|
||||
.4byte gSpriteImageTable_840B63C
|
||||
.4byte gSpriteImageTable_840B65C
|
||||
.4byte gSpriteImageTable_840B67C
|
||||
|
||||
gUnknown_0840B6B8:: @ 840B6B8
|
||||
spr_template -1, -1, gOamData_840B598, NULL, gSpriteImageTable_840B5BC, gDummySpriteAffineAnimTable, nullsub_81
|
||||
|
||||
.align 2
|
||||
gOamData_840B6D0:: @ 840B6D0
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B6D8:: @ 840B6D8
|
||||
obj_image_anim_frame 0, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B6E0:: @ 840B6E0
|
||||
obj_image_anim_frame 1, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B6E8:: @ 840B6E8
|
||||
obj_image_anim_frame 2, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B6F0:: @ 840B6F0
|
||||
obj_image_anim_frame 3, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B6F8:: @ 840B6F8
|
||||
obj_image_anim_frame 4, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B700:: @ 840B700
|
||||
obj_image_anim_frame 5, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B708:: @ 840B708
|
||||
obj_image_anim_frame 6, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B710:: @ 840B710
|
||||
obj_image_anim_frame 7, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B718:: @ 840B718
|
||||
obj_image_anim_frame 8, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B720:: @ 840B720
|
||||
obj_image_anim_frame 9, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B728:: @ 840B728
|
||||
obj_image_anim_frame 10, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B730:: @ 840B730
|
||||
obj_image_anim_frame 11, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B738:: @ 840B738
|
||||
obj_image_anim_frame 12, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B740:: @ 840B740
|
||||
obj_image_anim_frame 13, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B748:: @ 840B748
|
||||
obj_image_anim_frame 14, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B750:: @ 840B750
|
||||
obj_image_anim_frame 15, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_840B758:: @ 840B758
|
||||
obj_image_anim_frame 16, 30
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_840B760:: @ 840B760
|
||||
.4byte gSpriteAnim_840B6D8
|
||||
.4byte gSpriteAnim_840B6E0
|
||||
.4byte gSpriteAnim_840B6E8
|
||||
.4byte gSpriteAnim_840B6F0
|
||||
.4byte gSpriteAnim_840B6F8
|
||||
.4byte gSpriteAnim_840B700
|
||||
.4byte gSpriteAnim_840B708
|
||||
.4byte gSpriteAnim_840B710
|
||||
.4byte gSpriteAnim_840B718
|
||||
.4byte gSpriteAnim_840B720
|
||||
.4byte gSpriteAnim_840B728
|
||||
.4byte gSpriteAnim_840B730
|
||||
.4byte gSpriteAnim_840B738
|
||||
.4byte gSpriteAnim_840B740
|
||||
.4byte gSpriteAnim_840B748
|
||||
.4byte gSpriteAnim_840B750
|
||||
.4byte gSpriteAnim_840B758
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_840B7A4:: @ 840B7A4
|
||||
spr_template 1001, 1001, gOamData_840B6D0, gSpriteAnimTable_840B760, NULL, gDummySpriteAffineAnimTable, sub_814386C
|
||||
@@ -338,11 +338,11 @@ gSpriteAnimTable_8416D28:: @ 8416D28
|
||||
.4byte gSpriteAnim_8416D14
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_8416D2C:: @ 8416D2C
|
||||
gSpriteTemplate_Brendan:: @ 8416D2C
|
||||
spr_template 1001, 1002, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_8416D44:: @ 8416D44
|
||||
gSpriteTemplate_May:: @ 8416D44
|
||||
spr_template 1001, 1003, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
|
||||
|
||||
.align 2
|
||||
|
||||
@@ -1,150 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gDexArrows_Pal::
|
||||
.incbin "graphics/pokedex/arrows.gbapal"
|
||||
|
||||
.align 2
|
||||
gDexArrows_Gfx::
|
||||
.incbin "graphics/pokedex/arrows.4bpp"
|
||||
|
||||
gUnknown_08402CF8:: @ 8402CF8
|
||||
.byte 0, 0, 9, 13
|
||||
.byte 10, 0, 29, 7
|
||||
.byte 2, 14, 27, 19
|
||||
.byte 10, 8, 29, 13
|
||||
|
||||
gUnknown_08402D08:: @ 8402D08
|
||||
.4byte OtherText_Battle
|
||||
.byte 1, 1, 0, 0
|
||||
.4byte OtherText_Power
|
||||
.byte 1, 4, 1, 0
|
||||
.4byte OtherText_Accuracy
|
||||
.byte 1, 9, 2, 0
|
||||
.space 8
|
||||
|
||||
.4byte OtherText_Contest
|
||||
.byte 1, 1, 0, 0
|
||||
.4byte OtherText_Appeal
|
||||
.byte 1, 4, 1, 0
|
||||
.4byte OtherText_Jam
|
||||
.byte 1, 9, 2, 0
|
||||
.space 8
|
||||
|
||||
.4byte 0xFF00FFEF
|
||||
.4byte gTileBuffer
|
||||
|
||||
.align 2
|
||||
gOamData_8402D50:: @ 8402D50
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gOamData_8402D58:: @ 8402D58
|
||||
.2byte 0x8000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gOamData_8402D60:: @ 8402D60
|
||||
.2byte 0x4000
|
||||
.2byte 0x0000
|
||||
.2byte 0x0000
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402D68:: @ 8402D68
|
||||
obj_image_anim_frame 2, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402D70:: @ 8402D70
|
||||
obj_image_anim_frame 0, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_8402D78:: @ 8402D78
|
||||
.4byte gSpriteAnim_8402D68
|
||||
.4byte gSpriteAnim_8402D70
|
||||
|
||||
.align 2
|
||||
gUnknown_08402D80:: @ 8402D80
|
||||
obj_tiles gDexArrows_Gfx, 384, 0x1595
|
||||
|
||||
.align 2
|
||||
gUnknown_08402D88:: @ 8402D88
|
||||
obj_pal gDexArrows_Pal, 0x1596
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_8402D90:: @ 8402D90
|
||||
spr_template 5525, 5526, gOamData_8402D58, gSpriteAnimTable_8402D78, NULL, gDummySpriteAffineAnimTable, sub_8133300
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402DA8:: @ 8402DA8
|
||||
obj_image_anim_frame 4, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402DB0:: @ 8402DB0
|
||||
obj_image_anim_frame 6, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_8402DB8:: @ 8402DB8
|
||||
.4byte gSpriteAnim_8402DA8
|
||||
.4byte gSpriteAnim_8402DB0
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_8402DC0:: @ 8402DC0
|
||||
spr_template 5525, 5526, gOamData_8402D60, gSpriteAnimTable_8402DB8, NULL, gDummySpriteAffineAnimTable, sub_8133300
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402DD8:: @ 8402DD8
|
||||
obj_image_anim_frame 8, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402DE0:: @ 8402DE0
|
||||
obj_image_anim_frame 9, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402DE8:: @ 8402DE8
|
||||
obj_image_anim_frame 10, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnim_8402DF0:: @ 8402DF0
|
||||
obj_image_anim_frame 11, 5
|
||||
obj_image_anim_end
|
||||
|
||||
.align 2
|
||||
gSpriteAnimTable_8402DF8:: @ 8402DF8
|
||||
.4byte gSpriteAnim_8402DD8
|
||||
.4byte gSpriteAnim_8402DE0
|
||||
.4byte gSpriteAnim_8402DE8
|
||||
.4byte gSpriteAnim_8402DF0
|
||||
|
||||
.align 2
|
||||
gSpriteTemplate_8402E08:: @ 8402E08
|
||||
spr_template 5525, 5526, gOamData_8402D50, gSpriteAnimTable_8402DF8, NULL, gDummySpriteAffineAnimTable, sub_8133300
|
||||
|
||||
.string "あきと$" @ programmer Akito Mori?
|
||||
|
||||
gUnknown_08402E24:: @ 8402E24
|
||||
.byte 11, 1, 1
|
||||
.byte 3, 6, 2
|
||||
.byte 24, 1, 3
|
||||
.byte 3, 11, 4
|
||||
.byte 5, 4, 5
|
||||
.byte 3, 6, 6
|
||||
.byte 3, 11, 7
|
||||
|
||||
gUnknown_08402E39:: @ 8402E39
|
||||
.byte 0, 1, 2, 3
|
||||
|
||||
gUnknown_08402E3D:: @ 8402E3D
|
||||
.byte 4, 5, 6
|
||||
+10
-1
@@ -19,6 +19,15 @@
|
||||
#define BATTLE_TYPE_LEGENDARY 0x2000
|
||||
#define BATTLE_TYPE_REGI 0x4000
|
||||
|
||||
#define BATTLE_WON 0x1
|
||||
#define BATTLE_LOST 0x2
|
||||
#define BATTLE_DREW 0x3
|
||||
#define BATTLE_RAN 0x4
|
||||
#define BATTLE_PLAYER_TELEPORTED 0x5
|
||||
#define BATTLE_POKE_FLED 0x6
|
||||
#define BATTLE_CAUGHT 0x7
|
||||
#define BATTLE_OPPONENT_TELEPORTED 0xA
|
||||
|
||||
#define AI_ACTION_DONE 0x0001
|
||||
#define AI_ACTION_FLEE 0x0002
|
||||
#define AI_ACTION_WATCH 0x0004
|
||||
@@ -327,7 +336,7 @@ struct BattleStruct /* 0x2000000 */
|
||||
/*0x1609D*/ u8 unk1609D;
|
||||
/*0x1609E*/ u8 unk1609E;
|
||||
/*0x1609F*/ u8 unk1609F;
|
||||
/*0x160A0*/ u8 unk160a0;
|
||||
/*0x160A0*/ u8 stringMoveType;
|
||||
/*0x160A1*/ u8 animTargetsHit;
|
||||
/*0x160A2*/ u8 expGetterBank;
|
||||
/*0x160A3*/ u8 unk160A3;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
#ifndef GUARD_BATTLE_MESSAGE_H
|
||||
#define GUARD_BATTLE_MESSAGE_H
|
||||
|
||||
void StrCpyDecodeToDisplayedStringBattle(const u8 *);
|
||||
void StrCpyDecodeBattle(const u8 *, u8 *);
|
||||
void BufferStringBattle(u16 stringID);
|
||||
u32 StrCpyDecodeToDisplayedStringBattle(const u8* src);
|
||||
u32 StrCpyDecodeBattle(const u8* src, u8* dst);
|
||||
|
||||
#endif // GUARD_BATTLE_MESSAGE_H
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#ifndef GUARD_BERRY_BLENDER_H
|
||||
#define GUARD_BERRY_BLENDER_H
|
||||
|
||||
void sub_80516C4(u8, u16);
|
||||
|
||||
#endif // GUARD_BERRY_BLENDER_H
|
||||
@@ -45,6 +45,8 @@ extern const u8 gTrainerClassNames[][13];
|
||||
extern const struct Trainer gTrainers[];
|
||||
extern u8 gSpeciesNames[][11];
|
||||
extern u8 gMoveNames[][13];
|
||||
extern const u8 gAbilityNames[][13];
|
||||
extern const u8 gTypeNames[][7];
|
||||
extern const struct UnknownStructD2 gUnknown_081F9674;
|
||||
extern const u8 gUnknown_081F96C8[];
|
||||
extern struct CompressedSpriteSheet gUnknown_081FAEA4;
|
||||
|
||||
@@ -10,7 +10,7 @@ void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *a
|
||||
void LoadCompressedObjectPalette(const struct CompressedSpritePalette *a);
|
||||
void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
|
||||
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f);
|
||||
void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g);
|
||||
void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 pid);
|
||||
void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h);
|
||||
void Unused_LZDecompressWramIndirect(const void **src, void *dest);
|
||||
|
||||
|
||||
@@ -10,15 +10,16 @@ extern const struct SpritePalette gIntro2SpritePalettes[];
|
||||
extern const struct CompressedSpriteSheet gUnknown_08416E24;
|
||||
extern const struct CompressedSpriteSheet gUnknown_08416E34;
|
||||
|
||||
void load_intro_part2_graphics(/*TODO: arg types*/);
|
||||
void sub_8148C78(/*TODO: arg types*/);
|
||||
void load_intro_part2_graphics(u8 a);
|
||||
void sub_8148C78(u8 a);
|
||||
void sub_8148CB0(u8);
|
||||
void sub_8148E90(u8);
|
||||
u8 sub_8148EC0(/*TODO: arg types*/);
|
||||
void sub_8149020(/*TODO: arg types*/);
|
||||
u8 intro_create_brendan_sprite(/*TODO: arg types*/);
|
||||
u8 intro_create_may_sprite(/*TODO: arg types*/);
|
||||
u8 intro_create_latios_sprite(/*TODO: arg types*/);
|
||||
u8 intro_create_latias_sprite(/*TODO: arg types*/);
|
||||
u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d);
|
||||
void sub_8148F3C(u8);
|
||||
void sub_8149020(u8);
|
||||
u8 intro_create_brendan_sprite(s16 a, s16 b);
|
||||
u8 intro_create_may_sprite(s16 a, s16 b);
|
||||
u8 intro_create_latios_sprite(s16 a, s16 b);
|
||||
u8 intro_create_latias_sprite(s16 a, s16 b);
|
||||
|
||||
#endif // GUARD_INTRO_CREDITS_GRAPHICS_H
|
||||
|
||||
@@ -3,6 +3,17 @@
|
||||
|
||||
#include "string_util.h"
|
||||
|
||||
struct PocketScrollState
|
||||
{
|
||||
u8 cursorPos;
|
||||
u8 scrollTop;
|
||||
u8 numSlots;
|
||||
u8 cursorMax;
|
||||
};
|
||||
|
||||
extern struct PocketScrollState gBagPocketScrollStates[];
|
||||
extern struct ItemSlot *gCurrentBagPocketItemSlots;
|
||||
|
||||
void ResetBagScrollPositions(void);
|
||||
void ClearBag(void);
|
||||
void sub_80A3E0C(void);
|
||||
|
||||
@@ -583,6 +583,7 @@ void AdjustFriendship(struct Pokemon *, u8);
|
||||
u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
|
||||
void UpdatePartyPokerusTime(u16);
|
||||
u32 CanMonLearnTMHM(struct Pokemon *, u8);
|
||||
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
|
||||
u8 sub_8040574(struct Pokemon *party);
|
||||
void ClearBattleMonForms(void);
|
||||
void sub_80408BC();
|
||||
|
||||
+54
-54
@@ -37,28 +37,28 @@ enum
|
||||
/*0x1F*/ SE_SEIKAI,
|
||||
/*0x20*/ SE_HAZURE,
|
||||
/*0x21*/ SE_EXP,
|
||||
SE_JITE_PYOKO,
|
||||
SE_MU_PACHI,
|
||||
SE_TK_KASYA,
|
||||
SE_FU_ZAKU,
|
||||
SE_FU_ZAKU2,
|
||||
SE_FU_ZUZUZU,
|
||||
SE_RU_GASHIN,
|
||||
SE_RU_GASYAN,
|
||||
SE_RU_BARI,
|
||||
SE_RU_HYUU,
|
||||
SE_KI_GASYAN,
|
||||
SE_TK_WARPIN,
|
||||
SE_TK_WARPOUT,
|
||||
SE_TU_SAA,
|
||||
SE_HI_TURUN,
|
||||
SE_TRACK_MOVE,
|
||||
SE_TRACK_STOP,
|
||||
SE_TRACK_HAIK,
|
||||
SE_TRACK_DOOR,
|
||||
SE_MOTER,
|
||||
SE_CARD,
|
||||
SE_SAVE,
|
||||
/*0x22*/ SE_JITE_PYOKO,
|
||||
/*0x23*/ SE_MU_PACHI,
|
||||
/*0x24*/ SE_TK_KASYA,
|
||||
/*0x25*/ SE_FU_ZAKU,
|
||||
/*0x26*/ SE_FU_ZAKU2,
|
||||
/*0x27*/ SE_FU_ZUZUZU,
|
||||
/*0x28*/ SE_RU_GASHIN,
|
||||
/*0x29*/ SE_RU_GASYAN,
|
||||
/*0x2A*/ SE_RU_BARI,
|
||||
/*0x2B*/ SE_RU_HYUU,
|
||||
/*0x2C*/ SE_KI_GASYAN,
|
||||
/*0x2D*/ SE_TK_WARPIN,
|
||||
/*0x2E*/ SE_TK_WARPOUT,
|
||||
/*0x2F*/ SE_TU_SAA,
|
||||
/*0x30*/ SE_HI_TURUN,
|
||||
/*0x31*/ SE_TRACK_MOVE,
|
||||
/*0x32*/ SE_TRACK_STOP,
|
||||
/*0x33*/ SE_TRACK_HAIK,
|
||||
/*0x34*/ SE_TRACK_DOOR,
|
||||
/*0x35*/ SE_MOTER,
|
||||
/*0x36*/ SE_CARD,
|
||||
/*0x37*/ SE_SAVE,
|
||||
/*0x38*/ SE_KON,
|
||||
/*0x39*/ SE_KON2,
|
||||
/*0x3A*/ SE_KON3,
|
||||
@@ -274,38 +274,38 @@ enum
|
||||
/*0x171*/ BGM_ME_BACHI,
|
||||
/*0x172*/ BGM_FANFA4,
|
||||
/*0x173*/ BGM_FANFA5,
|
||||
BGM_ME_WAZA,
|
||||
BGM_BIJYUTU,
|
||||
BGM_DOORO_X4,
|
||||
BGM_FUNE_KAN,
|
||||
BGM_ME_SHINKA,
|
||||
BGM_SHINKA,
|
||||
BGM_ME_WASURE,
|
||||
BGM_SYOUJOEYE,
|
||||
BGM_BOYEYE,
|
||||
BGM_DAN02,
|
||||
BGM_MACHI_S3,
|
||||
BGM_ODAMAKI,
|
||||
BGM_B_TOWER,
|
||||
BGM_SWIMEYE,
|
||||
BGM_DAN03,
|
||||
BGM_ME_KINOMI,
|
||||
BGM_ME_TAMA,
|
||||
BGM_ME_B_BIG,
|
||||
BGM_ME_B_SMALL,
|
||||
BGM_ME_ZANNEN,
|
||||
BGM_BD_TIME,
|
||||
BGM_TEST1,
|
||||
BGM_TEST2,
|
||||
BGM_TEST3,
|
||||
BGM_TEST4,
|
||||
BGM_TEST,
|
||||
BGM_GOMACHI0,
|
||||
BGM_GOTOWN,
|
||||
BGM_POKECEN,
|
||||
BGM_NEXTROAD,
|
||||
BGM_GRANROAD,
|
||||
BGM_CYCLING,
|
||||
/*0x174*/ BGM_ME_WAZA,
|
||||
/*0x175*/ BGM_BIJYUTU,
|
||||
/*0x176*/ BGM_DOORO_X4,
|
||||
/*0x177*/ BGM_FUNE_KAN,
|
||||
/*0x178*/ BGM_ME_SHINKA,
|
||||
/*0x179*/ BGM_SHINKA,
|
||||
/*0x17A*/ BGM_ME_WASURE,
|
||||
/*0x17B*/ BGM_SYOUJOEYE,
|
||||
/*0x17C*/ BGM_BOYEYE,
|
||||
/*0x17D*/ BGM_DAN02,
|
||||
/*0x17E*/ BGM_MACHI_S3,
|
||||
/*0x17F*/ BGM_ODAMAKI,
|
||||
/*0x180*/ BGM_B_TOWER,
|
||||
/*0x181*/ BGM_SWIMEYE,
|
||||
/*0x182*/ BGM_DAN03,
|
||||
/*0x183*/ BGM_ME_KINOMI,
|
||||
/*0x184*/ BGM_ME_TAMA,
|
||||
/*0x185*/ BGM_ME_B_BIG,
|
||||
/*0x186*/ BGM_ME_B_SMALL,
|
||||
/*0x187*/ BGM_ME_ZANNEN,
|
||||
/*0x188*/ BGM_BD_TIME,
|
||||
/*0x189*/ BGM_TEST1,
|
||||
/*0x18A*/ BGM_TEST2,
|
||||
/*0x18B*/ BGM_TEST3,
|
||||
/*0x18C*/ BGM_TEST4,
|
||||
/*0x18D*/ BGM_TEST,
|
||||
/*0x18E*/ BGM_GOMACHI0,
|
||||
/*0x18F*/ BGM_GOTOWN,
|
||||
/*0x190*/ BGM_POKECEN,
|
||||
/*0x191*/ BGM_NEXTROAD,
|
||||
/*0x192*/ BGM_GRANROAD,
|
||||
/*0x193*/ BGM_CYCLING,
|
||||
BGM_FRIENDLY,
|
||||
BGM_MISHIRO,
|
||||
BGM_TOZAN,
|
||||
|
||||
+8
-8
@@ -204,14 +204,14 @@ struct Sprite
|
||||
/*0x3A*/ s16 data6;
|
||||
/*0x3C*/ s16 data7;
|
||||
|
||||
/*0x3E*/ u16 inUse:1;
|
||||
u16 coordOffsetEnabled:1;
|
||||
u16 invisible:1;
|
||||
u16 flags_3:1;
|
||||
u16 flags_4:1;
|
||||
u16 flags_5:1;
|
||||
u16 flags_6:1;
|
||||
u16 flags_7:1;
|
||||
/*0x3E*/ u16 inUse:1; //1
|
||||
u16 coordOffsetEnabled:1; //2
|
||||
u16 invisible:1; //4
|
||||
u16 flags_3:1; //8
|
||||
u16 flags_4:1; //0x10
|
||||
u16 flags_5:1; //0x20
|
||||
u16 flags_6:1; //0x40
|
||||
u16 flags_7:1; //0x80
|
||||
/*0x3F*/ u16 hFlip:1;
|
||||
u16 vFlip:1;
|
||||
u16 animBeginning:1;
|
||||
|
||||
+9
-10
@@ -74,7 +74,6 @@ SECTIONS {
|
||||
src/daycare.o(.text);
|
||||
asm/daycare.o(.text);
|
||||
src/egg_hatch.o(.text);
|
||||
asm/egg_hatch.o(.text);
|
||||
src/battle_interface.o(.text);
|
||||
src/smokescreen.o(.text);
|
||||
src/pokeball.o(.text);
|
||||
@@ -84,7 +83,7 @@ SECTIONS {
|
||||
asm/trade.o(.text.sub_804A9F4);
|
||||
src/trade.o(.text.sub_804DAD4);
|
||||
asm/trade.o(.text.sub_804DB2C);
|
||||
asm/berry_blender.o(.text);
|
||||
src/berry_blender.o(.text);
|
||||
src/play_time.o(.text);
|
||||
src/new_game.o(.text);
|
||||
src/rom4.o(.text);
|
||||
@@ -229,7 +228,7 @@ SECTIONS {
|
||||
src/fldeff_strength.o(.text);
|
||||
asm/battle_transition.o(.text);
|
||||
src/battle_811DA74.o(.text);
|
||||
asm/battle_message.o(.text);
|
||||
src/battle_message.o(.text);
|
||||
src/choose_party.o(.text);
|
||||
asm/cable_car.o(.text);
|
||||
asm/roulette_util.o(.text);
|
||||
@@ -244,7 +243,7 @@ SECTIONS {
|
||||
asm/battle_anim_81258BC.o(.text_812BBFC);
|
||||
src/fldeff_sweetscent.o(.text);
|
||||
asm/battle_anim_812C144.o(.text);
|
||||
asm/learn_move.o(.text);
|
||||
src/learn_move.o(.text);
|
||||
src/fldeff_softboiled.o(.text);
|
||||
src/decoration_inventory.o(.text);
|
||||
src/roamer.o(.text);
|
||||
@@ -255,7 +254,7 @@ SECTIONS {
|
||||
src/intro.o(.text);
|
||||
src/field_region_map.o(.text);
|
||||
asm/battle_anim_813F0F4.o(.text);
|
||||
asm/hall_of_fame.o(.text);
|
||||
src/hall_of_fame.o(.text);
|
||||
src/credits.o(.text);
|
||||
src/lottery_corner.o(.text);
|
||||
src/diploma.o(.text);
|
||||
@@ -265,7 +264,7 @@ SECTIONS {
|
||||
src/braille_puzzles.o(.text);
|
||||
asm/pokeblock_feed.o(.text);
|
||||
src/clear_save_data_menu.o(.text);
|
||||
asm/intro_credits_graphics.o(.text);
|
||||
src/intro_credits_graphics.o(.text);
|
||||
asm/evolution_graphics.o(.text);
|
||||
src/bard_music.o(.text);
|
||||
src/fldeff_teleport.o(.text);
|
||||
@@ -339,11 +338,11 @@ SECTIONS {
|
||||
src/trig.o(.rodata);
|
||||
src/util.o(.rodata);
|
||||
data/daycare.o(.rodata);
|
||||
data/egg_hatch.o(.rodata);
|
||||
src/egg_hatch.o(.rodata);
|
||||
data/battle_interface.o(.rodata);
|
||||
src/pokeball.o(.rodata);
|
||||
data/trade.o(.rodata);
|
||||
data/berry_blender.o(.rodata);
|
||||
src/berry_blender.o(.rodata);
|
||||
src/new_game.o(.rodata);
|
||||
data/rom4.o(.rodata);
|
||||
data/tilesets.o(.rodata);
|
||||
@@ -455,7 +454,7 @@ SECTIONS {
|
||||
data/contest_ai.o(.rodata);
|
||||
data/battle_anim_81258BC.o(.rodata);
|
||||
data/battle_anim_812C144.o(.rodata);
|
||||
data/learn_move.o(.rodata);
|
||||
src/learn_move.o(.rodata);
|
||||
src/decoration_inventory.o(.rodata);
|
||||
src/roamer.o(.rodata);
|
||||
data/battle_tower.o(.rodata);
|
||||
@@ -464,7 +463,7 @@ SECTIONS {
|
||||
src/player_pc.o(.rodata);
|
||||
src/intro.o(.rodata);
|
||||
data/battle_anim_813F0F4.o(.rodata);
|
||||
data/hall_of_fame.o(.rodata);
|
||||
src/hall_of_fame.o(.rodata);
|
||||
src/credits.o(.rodata);
|
||||
data/credits.o(.rodata);
|
||||
src/lottery_corner.o(.rodata);
|
||||
|
||||
@@ -246,15 +246,6 @@ extern u8 gUnknown_081D95DB[]; //bs payday money give
|
||||
#define CMP_COMMON_BITS 0x4
|
||||
#define CMP_NO_COMMON_BITS 0x5
|
||||
|
||||
#define BATTLE_WON 0x1
|
||||
#define BATTLE_LOST 0x2
|
||||
#define BATTLE_DREW 0x3
|
||||
#define BATTLE_RAN 0x4
|
||||
#define BATTLE_PLAYER_TELEPORTED 0x5
|
||||
#define BATTLE_POKE_FLED 0x6
|
||||
#define BATTLE_CAUGHT 0x7
|
||||
#define BATTLE_OPPONENT_TELEPORTED 0xA
|
||||
|
||||
#define uBYTE0_16(value)(( (u8) (((u16)(value) & (0x000000FF)) >> 0x00)))
|
||||
#define uBYTE1_16(value)(( (u8) (((u16)(value) & (0x0000FF00)) >> 0x08)))
|
||||
|
||||
|
||||
@@ -0,0 +1,974 @@
|
||||
#include "global.h"
|
||||
#include "battle_message.h"
|
||||
#include "battle.h"
|
||||
#include "item.h"
|
||||
#include "items.h"
|
||||
#include "pokemon.h"
|
||||
#include "data2.h"
|
||||
#include "text.h"
|
||||
#include "string_util.h"
|
||||
#include "link.h"
|
||||
#include "battle_setup.h"
|
||||
#include "battle_tower.h"
|
||||
#include "flags.h"
|
||||
|
||||
#define BATTLESTRING_TO_SUB 12
|
||||
#define BATTLESTRINGS_NO 351
|
||||
#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB
|
||||
|
||||
extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO];
|
||||
|
||||
extern u16 gLastUsedItem;
|
||||
extern u8 gLastUsedAbility;
|
||||
extern u8 gActiveBank;
|
||||
extern u8 gBankAttacker;
|
||||
extern u8 gBankTarget;
|
||||
extern u8 gStringBank;
|
||||
extern u8 gEffectBank;
|
||||
extern u8 gAbilitiesPerBank[4];
|
||||
extern u8 gBattleTextBuff1[];
|
||||
extern u8 gBattleTextBuff2[];
|
||||
extern u8 gBattleTextBuff3[];
|
||||
extern u8 gStringVar1[];
|
||||
extern u8 gStringVar2[];
|
||||
extern u8 gStringVar3[];
|
||||
extern u16 gBattleTypeFlags;
|
||||
extern u16 gTrainerBattleOpponent;
|
||||
extern u8 gDisplayedStringBattle[];
|
||||
extern u8 gStringVar1[];
|
||||
extern u8 gStringVar2[];
|
||||
extern u8 gStringVar3[];
|
||||
extern u16 gBattlePartyID[4];
|
||||
extern struct BattleEnigmaBerry gEnigmaBerries[4];
|
||||
extern u8 gBattleBufferA[4][0x200];
|
||||
|
||||
extern const u8 gUnknown_084005DB[];
|
||||
extern const u8 gUnknown_084005C7[];
|
||||
extern const u8 gUnknown_084005AA[];
|
||||
extern const u8 gUnknown_08400568[];
|
||||
extern const u8 gUnknown_08400590[];
|
||||
extern const u8 gUnknown_0840057B[];
|
||||
extern const u8 gUnknown_08400555[];
|
||||
extern const u8 gUnknown_084006F1[];
|
||||
extern const u8 gUnknown_084006A4[];
|
||||
extern const u8 gUnknown_0840069C[];
|
||||
extern const u8 gUnknown_0840065C[];
|
||||
extern const u8 gUnknown_08400645[];
|
||||
extern const u8 gUnknown_08400608[];
|
||||
extern const u8 gUnknown_08400635[];
|
||||
extern const u8 gUnknown_084005F5[];
|
||||
extern const u8 gUnknown_08400709[];
|
||||
extern const u8 gUnknown_08400727[];
|
||||
extern const u8 gUnknown_08400736[];
|
||||
extern const u8 gUnknown_08400749[];
|
||||
extern const u8 gUnknown_08400781[];
|
||||
extern const u8 gUnknown_08400771[];
|
||||
extern const u8 gUnknown_0840075E[];
|
||||
extern const u8 gUnknown_084006B3[];
|
||||
extern const u8 gUnknown_084006BB[];
|
||||
extern const u8 gUnknown_084006C6[];
|
||||
extern const u8 gUnknown_084006D5[];
|
||||
extern const u8 gUnknown_0840068C[];
|
||||
extern const u8 gUnknown_0840067C[];
|
||||
extern const u8 gUnknown_08400622[];
|
||||
extern const u8 gUnknown_084007BD[];
|
||||
extern const u8 gUnknown_083FFEFC[];
|
||||
extern const u8 gUnknown_083FFFF7[];
|
||||
extern const u8 gUnknown_083FFFEA[];
|
||||
extern const u8 gUnknown_083FFF6A[];
|
||||
extern const u8 gUnknown_083FFF99[];
|
||||
extern const u8 gUnknown_083FFFCB[];
|
||||
extern const u8 gUnknown_083FFF56[];
|
||||
extern const u8 gUnknown_083FFF81[];
|
||||
extern const u8 gUnknown_083FFFB3[];
|
||||
extern const u8 gUnknown_08400A78[];
|
||||
extern const u8 gUnknown_08400A85[];
|
||||
extern const u8 gUnknown_08400797[];
|
||||
extern const u8 gUnknown_08400791[];
|
||||
extern const u8 gUnknown_084007B7[];
|
||||
extern const u8 gUnknown_084007B2[];
|
||||
extern const u8 gUnknown_0840079C[];
|
||||
extern const u8 gUnknown_084007A1[];
|
||||
extern const u8 gUnknown_084007A7[];
|
||||
extern const u8 gUnknown_084007AC[];
|
||||
extern const u8 gUnknown_084009ED[];
|
||||
extern const u8 gUnknown_084009F7[];
|
||||
extern const u8 gUnknown_084007C8[];
|
||||
extern const u8 gUnknown_084007CA[];
|
||||
extern const u8 gUnknown_084007CC[];
|
||||
extern const u8 gUnknown_084007CE[];
|
||||
extern const u8 gUnknown_084007D0[];
|
||||
extern const u8 gUnknown_08400E5E[];
|
||||
extern const u8 gUnknown_08400E62[];
|
||||
|
||||
extern const u16 gUnknown_084016BC[]; // a table of moves
|
||||
|
||||
extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings
|
||||
extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings
|
||||
extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings
|
||||
|
||||
struct StatusFlagString
|
||||
{
|
||||
u8* flag;
|
||||
u8* ptr;
|
||||
};
|
||||
|
||||
extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text
|
||||
extern const u8 gUnknown_084017A8[8]; // empty flags
|
||||
|
||||
struct StringInfo
|
||||
{
|
||||
u16 currentMove;
|
||||
u16 lastMove;
|
||||
u16 lastItem;
|
||||
u8 lastAbility;
|
||||
u8 scrActive;
|
||||
u8 unk1605E;
|
||||
u8 hpScale;
|
||||
u8 StringBank;
|
||||
u8 moveType;
|
||||
u8 abilities[4];
|
||||
u8 textBuffs[3][0x10];
|
||||
};
|
||||
|
||||
extern struct StringInfo* gSelectedOrderFromParty;
|
||||
#define gStringInfo gSelectedOrderFromParty
|
||||
|
||||
void sub_8121D1C(u8* textBuff);
|
||||
void sub_8121D74(u8* textBuff);
|
||||
void StrCpyDecodeBattleTextBuff(u8* src, u8* dst);
|
||||
|
||||
u8 GetBankSide(u8 bank);
|
||||
s32 sub_803FC34(u16);
|
||||
void get_trainer_name(u8* dst);
|
||||
u8 get_trainer_class_name_index(void);
|
||||
u8 sub_8135FD8(void);
|
||||
u8 GetMultiplayerId(void);
|
||||
u8 GetBankByPlayerAI(u8 ID);
|
||||
u8 GetBankSide(u8 bank);
|
||||
u8 GetBankIdentity(u8 bank);
|
||||
#ifdef GERMAN
|
||||
extern u8 *de_sub_804110C();
|
||||
#endif
|
||||
|
||||
void BufferStringBattle(u16 stringID)
|
||||
{
|
||||
int i;
|
||||
const u8* stringPtr = NULL;
|
||||
|
||||
gStringInfo = (struct StringInfo*)(&gBattleBufferA[gActiveBank][4]);
|
||||
gLastUsedItem = gStringInfo->lastItem;
|
||||
gLastUsedAbility = gStringInfo->lastAbility;
|
||||
BATTLE_STRUCT->scriptingActive = gStringInfo->scrActive;
|
||||
BATTLE_STRUCT->unk1605E = gStringInfo->unk1605E;
|
||||
BATTLE_STRUCT->hpScale = gStringInfo->hpScale;
|
||||
gStringBank = gStringInfo->StringBank;
|
||||
BATTLE_STRUCT->stringMoveType = gStringInfo->moveType;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
gAbilitiesPerBank[i] = gStringInfo->abilities[i];
|
||||
}
|
||||
for (i = 0; i < 0x10; i++)
|
||||
{
|
||||
gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i];
|
||||
gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i];
|
||||
gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i];
|
||||
}
|
||||
switch (stringID)
|
||||
{
|
||||
case 0: // first battle msg
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
stringPtr = gUnknown_084005DB;
|
||||
else
|
||||
stringPtr = gUnknown_084005C7;
|
||||
}
|
||||
else
|
||||
{
|
||||
stringPtr = gUnknown_084005AA;
|
||||
#ifdef GERMAN
|
||||
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
|
||||
stringPtr = gUnknown_08400568;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
|
||||
stringPtr = gUnknown_08400590;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
|
||||
stringPtr = gUnknown_0840057B;
|
||||
else
|
||||
stringPtr = gUnknown_08400555;
|
||||
}
|
||||
break;
|
||||
case 1: // poke first send-out
|
||||
if (GetBankSide(gActiveBank) == 0)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
stringPtr = gUnknown_084006F1;
|
||||
else
|
||||
stringPtr = gUnknown_084006A4;
|
||||
}
|
||||
else
|
||||
stringPtr = gUnknown_0840069C;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
stringPtr = gUnknown_0840065C;
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
stringPtr = gUnknown_08400645;
|
||||
else
|
||||
{
|
||||
stringPtr = gUnknown_08400608;
|
||||
#ifdef GERMAN
|
||||
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
stringPtr = gUnknown_08400635;
|
||||
else
|
||||
{
|
||||
stringPtr = gUnknown_084005F5;
|
||||
#ifdef GERMAN
|
||||
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2: // sending poke to ball msg
|
||||
if (GetBankSide(gActiveBank) == 0)
|
||||
{
|
||||
if (BATTLE_STRUCT->hpScale == 0)
|
||||
stringPtr = gUnknown_08400709;
|
||||
else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
stringPtr = gUnknown_08400727;
|
||||
else if (BATTLE_STRUCT->hpScale == 2)
|
||||
stringPtr = gUnknown_08400736;
|
||||
else
|
||||
stringPtr = gUnknown_08400749;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gTrainerBattleOpponent == 0x800)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
stringPtr = gUnknown_08400781;
|
||||
else
|
||||
stringPtr = gUnknown_08400771;
|
||||
}
|
||||
else
|
||||
{
|
||||
stringPtr = gUnknown_0840075E;
|
||||
#ifdef GERMAN
|
||||
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3: // switch-in msg
|
||||
if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0)
|
||||
{
|
||||
if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
stringPtr = gUnknown_084006B3;
|
||||
else if (BATTLE_STRUCT->hpScale == 1)
|
||||
stringPtr = gUnknown_084006BB;
|
||||
else if (BATTLE_STRUCT->hpScale == 2)
|
||||
stringPtr = gUnknown_084006C6;
|
||||
else
|
||||
stringPtr = gUnknown_084006D5;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
stringPtr = gUnknown_0840068C;
|
||||
else
|
||||
stringPtr = gUnknown_0840067C;
|
||||
}
|
||||
else
|
||||
{
|
||||
stringPtr = gUnknown_08400622;
|
||||
#ifdef GERMAN
|
||||
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4: // pokemon used a move msg
|
||||
sub_8121D1C(gBattleTextBuff1);
|
||||
if (gStringInfo->currentMove > 0x162)
|
||||
StringCopy(gBattleTextBuff2, gUnknown_08401674[BATTLE_STRUCT->stringMoveType]);
|
||||
else
|
||||
StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]);
|
||||
sub_8121D74(gBattleTextBuff2);
|
||||
stringPtr = gUnknown_084007BD;
|
||||
break;
|
||||
case 5: // battle end
|
||||
if (gBattleTextBuff1[0] & 0x80)
|
||||
{
|
||||
gBattleTextBuff1[0] &= ~(0x80);
|
||||
if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
|
||||
gBattleTextBuff1[0] ^= 3;
|
||||
if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
|
||||
stringPtr = gUnknown_083FFEFC;
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
stringPtr = gUnknown_083FFFF7;
|
||||
else
|
||||
stringPtr = gUnknown_083FFFEA;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
|
||||
gBattleTextBuff1[0] ^= 3;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
switch (gBattleTextBuff1[0])
|
||||
{
|
||||
case BATTLE_WON:
|
||||
stringPtr = gUnknown_083FFF6A;
|
||||
break;
|
||||
case BATTLE_LOST:
|
||||
stringPtr = gUnknown_083FFF99;
|
||||
break;
|
||||
case BATTLE_DREW:
|
||||
stringPtr = gUnknown_083FFFCB;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (gBattleTextBuff1[0])
|
||||
{
|
||||
case BATTLE_WON:
|
||||
stringPtr = gUnknown_083FFF56;
|
||||
break;
|
||||
case BATTLE_LOST:
|
||||
stringPtr = gUnknown_083FFF81;
|
||||
break;
|
||||
case BATTLE_DREW:
|
||||
stringPtr = gUnknown_083FFFB3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default: // load a string from the table
|
||||
if (stringID >= BATTLESTRINGS_MAX)
|
||||
{
|
||||
gDisplayedStringBattle[0] = EOS;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
stringPtr = gBattleStringsTable[stringID - BATTLESTRING_TO_SUB];
|
||||
#ifdef GERMAN
|
||||
stringPtr = de_sub_804110C(stringID, stringPtr);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
StrCpyDecodeToDisplayedStringBattle(stringPtr);
|
||||
}
|
||||
|
||||
u32 StrCpyDecodeToDisplayedStringBattle(const u8* src)
|
||||
{
|
||||
StrCpyDecodeBattle(src, gDisplayedStringBattle);
|
||||
}
|
||||
|
||||
const u8* AppendStatusString(u8* src)
|
||||
{
|
||||
u32 i;
|
||||
u8 status[8];
|
||||
u32 flag1, flag2;
|
||||
u8* statusPtr;
|
||||
|
||||
memcpy(status, gUnknown_084017A8, 8);
|
||||
|
||||
statusPtr = status;
|
||||
for (i = 0; i < sizeof(struct StatusFlagString); i++)
|
||||
{
|
||||
if (*src == EOS)
|
||||
break;
|
||||
*statusPtr = *src;
|
||||
src++;
|
||||
statusPtr++;
|
||||
}
|
||||
flag1 = *(u32*)(&status[0]);
|
||||
flag2 = *(u32*)(&status[4]);
|
||||
for (i = 0; i < 7; i++)
|
||||
{
|
||||
if (flag1 == *(u32*)(&gUnknown_081FA6D4[i].flag[0]) && flag2 == *(u32*)(&gUnknown_081FA6D4[i].flag[4]))
|
||||
return gUnknown_081FA6D4[i].ptr;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef GERMAN
|
||||
extern u8 *de_sub_8073174(u8 *, const u8 *);
|
||||
extern u8 *de_sub_8041024(s32, u32);
|
||||
#endif
|
||||
|
||||
#ifdef ENGLISH
|
||||
#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
|
||||
if (GetBankSide(bank) != 0) \
|
||||
{ \
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
|
||||
toCpy = gUnknown_08400797; \
|
||||
else \
|
||||
toCpy = gUnknown_08400791; \
|
||||
while (*toCpy != EOS) \
|
||||
{ \
|
||||
dst[dstID] = *toCpy; \
|
||||
dstID++; \
|
||||
toCpy++; \
|
||||
} \
|
||||
GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
|
||||
} \
|
||||
StringGetEnd10(text); \
|
||||
toCpy = text;
|
||||
#else
|
||||
#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
|
||||
if (GetBankSide(bank) != 0) \
|
||||
{ \
|
||||
GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
|
||||
StringGetEnd10(text); \
|
||||
toCpy = text; \
|
||||
while (*toCpy != EOS) \
|
||||
{ \
|
||||
dst[dstID] = *toCpy; \
|
||||
dstID++; \
|
||||
toCpy++; \
|
||||
} \
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
|
||||
toCpy = gUnknown_08400797; \
|
||||
else \
|
||||
toCpy = gUnknown_08400791; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
|
||||
StringGetEnd10(text); \
|
||||
toCpy = text; \
|
||||
}
|
||||
#endif
|
||||
|
||||
u32 StrCpyDecodeBattle(const u8* src, u8* dst)
|
||||
{
|
||||
u32 dstID = 0; // if they used dstID, why not use srcID as well?
|
||||
const u8* toCpy = NULL;
|
||||
u8 text[12];
|
||||
u8 multiplayerID = GetMultiplayerId();
|
||||
|
||||
while (*src != EOS)
|
||||
{
|
||||
if (*src == 0xFD)
|
||||
{
|
||||
src++;
|
||||
switch (*src)
|
||||
{
|
||||
case 0:
|
||||
if (gBattleTextBuff1[0] == 0xFD)
|
||||
{
|
||||
StrCpyDecodeBattleTextBuff(gBattleTextBuff1, gStringVar1);
|
||||
toCpy = gStringVar1;
|
||||
}
|
||||
else
|
||||
{
|
||||
toCpy = AppendStatusString(gBattleTextBuff1);
|
||||
if (toCpy == 0)
|
||||
toCpy = gBattleTextBuff1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (gBattleTextBuff2[0] == 0xFD)
|
||||
{
|
||||
StrCpyDecodeBattleTextBuff(gBattleTextBuff2, gStringVar2);
|
||||
toCpy = gStringVar2;
|
||||
}
|
||||
else
|
||||
toCpy = gBattleTextBuff2;
|
||||
break;
|
||||
case 42:
|
||||
if (gBattleTextBuff3[0] == 0xFD)
|
||||
{
|
||||
StrCpyDecodeBattleTextBuff(gBattleTextBuff3, gStringVar3);
|
||||
toCpy = gStringVar3;
|
||||
}
|
||||
else
|
||||
toCpy = gBattleTextBuff3;
|
||||
break;
|
||||
case 2: // first player poke name
|
||||
GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(0)]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 3: // first enemy poke name
|
||||
GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(1)]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 4: // second player poke name
|
||||
GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(2)]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 5: // second enemy poke name
|
||||
GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(3)]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 6: // link first player poke name
|
||||
GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 7: // link first opponent poke name
|
||||
GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 8: // link second player poke name
|
||||
GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 9: // link second opponent poke name
|
||||
GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 10: // attacker name with prefix, only bank 0/1
|
||||
HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)])
|
||||
break;
|
||||
case 11: // attacker partner name, only bank 0/1
|
||||
if (GetBankSide(gBankAttacker) == 0)
|
||||
GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
|
||||
else
|
||||
GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
|
||||
|
||||
StringGetEnd10(text);
|
||||
toCpy = text;
|
||||
break;
|
||||
case 12: // attacker name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker])
|
||||
break;
|
||||
case 13: // target name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget])
|
||||
break;
|
||||
case 14: // effect bank name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank])
|
||||
break;
|
||||
case 15: // active bank name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank])
|
||||
break;
|
||||
case 16: // scripting active bank name with prefix
|
||||
HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, gBattlePartyID[BATTLE_STRUCT->scriptingActive])
|
||||
break;
|
||||
case 17: // current move name
|
||||
if (gStringInfo->currentMove > 0x162)
|
||||
toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType];
|
||||
else
|
||||
toCpy = gMoveNames[gStringInfo->currentMove];
|
||||
break;
|
||||
case 18: // last used move name
|
||||
if (gStringInfo->lastMove > 0x162)
|
||||
toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType];
|
||||
else
|
||||
toCpy = gMoveNames[gStringInfo->lastMove];
|
||||
break;
|
||||
case 19: // last used item
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (gLastUsedItem == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank)
|
||||
{
|
||||
StringCopy(text, gEnigmaBerries[gStringBank].name);
|
||||
#ifdef ENGLISH
|
||||
StringAppend(text, gUnknown_08400A85);
|
||||
#else
|
||||
de_sub_8073174(text, gUnknown_08400A85);
|
||||
#endif
|
||||
toCpy = text;
|
||||
}
|
||||
else
|
||||
toCpy = gUnknown_08400A78;
|
||||
}
|
||||
else
|
||||
{
|
||||
CopyItemName(gLastUsedItem, text);
|
||||
toCpy = text;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
CopyItemName(gLastUsedItem, text);
|
||||
toCpy = text;
|
||||
}
|
||||
break;
|
||||
case 20: // last used ability
|
||||
toCpy = gAbilityNames[gLastUsedAbility];
|
||||
break;
|
||||
case 21: // attacker ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]];
|
||||
break;
|
||||
case 22: // target ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]];
|
||||
break;
|
||||
case 23: // scripting active ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[BATTLE_STRUCT->scriptingActive]];
|
||||
break;
|
||||
case 24: // effect bank ability
|
||||
toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]];
|
||||
break;
|
||||
case 25: // trainer class name
|
||||
#ifdef ENGLISH
|
||||
if (gTrainerBattleOpponent == 0x400)
|
||||
toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||
toCpy = gTrainerClassNames[get_trainer_class_name_index()];
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
|
||||
toCpy = gTrainerClassNames[sub_8135FD8()];
|
||||
else
|
||||
toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent].trainerClass];
|
||||
break;
|
||||
#else
|
||||
if (gTrainerBattleOpponent == 0x400)
|
||||
toCpy = de_sub_8041024(gTrainerBattleOpponent, 0);
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||
toCpy = de_sub_8041024(BATTLE_TYPE_BATTLE_TOWER, 0);
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
|
||||
toCpy = de_sub_8041024(BATTLE_TYPE_EREADER_TRAINER, 0);
|
||||
else
|
||||
toCpy = de_sub_8041024(0, gTrainerBattleOpponent);
|
||||
break;
|
||||
#endif
|
||||
case 26: // trainer name
|
||||
if (gTrainerBattleOpponent == 0x400)
|
||||
{
|
||||
memset(text, 0xFF, 8);
|
||||
memcpy(text, &ewram[0x17002], 7);
|
||||
toCpy = text;
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||
{
|
||||
get_trainer_name(text);
|
||||
toCpy = text;
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
|
||||
{
|
||||
sub_8135FF4(text);
|
||||
toCpy = text;
|
||||
}
|
||||
else
|
||||
toCpy = gTrainers[gTrainerBattleOpponent].trainerName;
|
||||
break;
|
||||
case 27: // link player name?
|
||||
toCpy = gLinkPlayers[multiplayerID].name;
|
||||
break;
|
||||
case 28: // link partner name?
|
||||
toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
|
||||
break;
|
||||
case 29: // link opponent 1 name?
|
||||
toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
|
||||
break;
|
||||
case 30: // link opponent 2 name?
|
||||
toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
|
||||
break;
|
||||
case 31: // link scripting active name
|
||||
toCpy = gLinkPlayers[sub_803FC34(BATTLE_STRUCT->scriptingActive)].name;
|
||||
break;
|
||||
case 32: // player name
|
||||
toCpy = gSaveBlock2.playerName;
|
||||
break;
|
||||
case 33: // ?
|
||||
toCpy = sub_8082830();
|
||||
break;
|
||||
case 34: // ?
|
||||
HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, BATTLE_STRUCT->unk1605E)
|
||||
break;
|
||||
case 35: // lanette pc
|
||||
if (FlagGet(SYS_PC_LANETTE))
|
||||
toCpy = gUnknown_084009F7;
|
||||
else
|
||||
toCpy = gUnknown_084009ED;
|
||||
break;
|
||||
case 38:
|
||||
if (GetBankSide(gBankAttacker) == 0)
|
||||
toCpy = gUnknown_084007AC;
|
||||
else
|
||||
toCpy = gUnknown_084007A7;
|
||||
break;
|
||||
case 39:
|
||||
if (GetBankSide(gBankTarget) == 0)
|
||||
toCpy = gUnknown_084007AC;
|
||||
else
|
||||
toCpy = gUnknown_084007A7;
|
||||
break;
|
||||
case 36:
|
||||
if (GetBankSide(gBankAttacker) == 0)
|
||||
toCpy = gUnknown_084007A1;
|
||||
else
|
||||
toCpy = gUnknown_0840079C;
|
||||
break;
|
||||
case 37:
|
||||
if (GetBankSide(gBankTarget) == 0)
|
||||
toCpy = gUnknown_084007A1;
|
||||
else
|
||||
toCpy = gUnknown_0840079C;
|
||||
break;
|
||||
case 40:
|
||||
if (GetBankSide(gBankAttacker) == 0)
|
||||
toCpy = gUnknown_084007B7;
|
||||
else
|
||||
toCpy = gUnknown_084007B2;
|
||||
break;
|
||||
case 41:
|
||||
if (GetBankSide(gBankTarget) == 0)
|
||||
toCpy = gUnknown_084007B7;
|
||||
else
|
||||
toCpy = gUnknown_084007B2;
|
||||
break;
|
||||
}
|
||||
//if (toCpy != NULL) really GF, why did you forget about this?
|
||||
while (*toCpy != EOS)
|
||||
{
|
||||
dst[dstID] = *toCpy;
|
||||
dstID++;
|
||||
toCpy++;
|
||||
}
|
||||
if (*src == 33)
|
||||
{
|
||||
dst[dstID] = 0xFC;
|
||||
dstID++;
|
||||
dst[dstID] = 9;
|
||||
dstID++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dst[dstID] = *src;
|
||||
dstID++;
|
||||
}
|
||||
src++;
|
||||
}
|
||||
dst[dstID] = *src;
|
||||
dstID++;
|
||||
return dstID;
|
||||
}
|
||||
|
||||
#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
|
||||
#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
|
||||
|
||||
void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
|
||||
{
|
||||
u32 srcID = 1;
|
||||
u32 value = 0;
|
||||
u8 text[12];
|
||||
u16 hword;
|
||||
|
||||
*dst = EOS;
|
||||
while (src[srcID] != EOS)
|
||||
{
|
||||
switch (src[srcID])
|
||||
{
|
||||
case 0: // battle string
|
||||
hword = ByteRead16(&src[srcID + 1]);
|
||||
#ifdef GERMAN
|
||||
if (hword == 209 || hword == 211)
|
||||
srcID += 3;
|
||||
#endif
|
||||
StringAppend(dst, gBattleStringsTable[hword - BATTLESTRING_TO_SUB]);
|
||||
srcID += 3;
|
||||
break;
|
||||
case 1: // int to string
|
||||
switch (src[srcID + 1])
|
||||
{
|
||||
case 1:
|
||||
value = src[srcID + 3];
|
||||
break;
|
||||
case 2:
|
||||
value = ByteRead16(&src[srcID + 3]);
|
||||
break;
|
||||
case 4:
|
||||
value = ByteRead32(&src[srcID + 3]);
|
||||
break;
|
||||
}
|
||||
ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]);
|
||||
srcID += src[srcID + 1] + 3;
|
||||
break;
|
||||
case 2: // move name
|
||||
StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]);
|
||||
srcID += 3;
|
||||
break;
|
||||
case 3: // type name
|
||||
StringAppend(dst, gTypeNames[src[srcID + 1]]);
|
||||
srcID += 2;
|
||||
break;
|
||||
case 4: // poke nick with prefix
|
||||
#ifdef ENGLISH
|
||||
if (GetBankSide(src[srcID + 1]) == 0)
|
||||
{
|
||||
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
StringAppend(dst, gUnknown_08400797);
|
||||
else
|
||||
StringAppend(dst, gUnknown_08400791);
|
||||
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
|
||||
}
|
||||
StringGetEnd10(text);
|
||||
StringAppend(dst, text);
|
||||
#else
|
||||
if (GetBankSide(src[srcID + 1]) == 0)
|
||||
{
|
||||
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
StringAppend(dst, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
|
||||
StringGetEnd10(text);
|
||||
StringAppend(dst, text);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
StringAppend(dst, gUnknown_08400797);
|
||||
else
|
||||
StringAppend(dst, gUnknown_08400791);
|
||||
}
|
||||
#endif
|
||||
srcID += 3;
|
||||
break;
|
||||
case 5: // stats
|
||||
StringAppend(dst, gUnknown_08400F58[src[srcID + 1]]);
|
||||
srcID += 2;
|
||||
break;
|
||||
case 6: // species name
|
||||
GetSpeciesName(dst, ByteRead16(&src[srcID + 1]));
|
||||
srcID += 3;
|
||||
break;
|
||||
case 7: // poke nick without prefix
|
||||
if (GetBankSide(src[srcID + 1]) == 0)
|
||||
GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
|
||||
else
|
||||
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
|
||||
StringGetEnd10(dst);
|
||||
srcID += 3;
|
||||
break;
|
||||
case 8: // flavour table
|
||||
StringAppend(dst, gUnknown_08400F78[src[srcID + 1]]);
|
||||
srcID += 2;
|
||||
break;
|
||||
case 9: // ability names
|
||||
StringAppend(dst, gAbilityNames[src[srcID + 1]]);
|
||||
srcID += 2;
|
||||
break;
|
||||
case 10: // item name
|
||||
{
|
||||
hword = ByteRead16(&src[srcID + 1]);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
if (hword == ITEM_ENIGMA_BERRY)
|
||||
{
|
||||
if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank)
|
||||
{
|
||||
StringCopy(dst, gEnigmaBerries[gStringBank].name);
|
||||
#ifdef ENGLISH
|
||||
StringAppend(dst, gUnknown_08400A85);
|
||||
#else
|
||||
de_sub_8073174(dst, gUnknown_08400A85);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
StringAppend(dst, gUnknown_08400A78);
|
||||
}
|
||||
else
|
||||
CopyItemName(hword, dst);
|
||||
}
|
||||
else
|
||||
CopyItemName(hword, dst);
|
||||
srcID += 3;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8121D1C(u8* textBuff)
|
||||
{
|
||||
s32 counter = 0;
|
||||
u32 i = 0;
|
||||
|
||||
while (counter != 4)
|
||||
{
|
||||
if (gUnknown_084016BC[i] == 0)
|
||||
counter++;
|
||||
if (gUnknown_084016BC[i++] == gStringInfo->currentMove)
|
||||
break;
|
||||
}
|
||||
|
||||
if (counter >= 0)
|
||||
{
|
||||
if (counter <= 2)
|
||||
StringCopy(textBuff, gUnknown_08400E5E); // is
|
||||
else if (counter <= 4)
|
||||
StringCopy(textBuff, gUnknown_08400E62); // 's
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8121D74(u8* dst)
|
||||
{
|
||||
s32 counter = 0;
|
||||
s32 i = 0;
|
||||
|
||||
while (*dst != EOS)
|
||||
dst++;
|
||||
|
||||
while (counter != 4)
|
||||
{
|
||||
if (gUnknown_084016BC[i] == 0)
|
||||
counter++;
|
||||
if (gUnknown_084016BC[i++] == gStringInfo->currentMove)
|
||||
break;
|
||||
}
|
||||
|
||||
switch (counter)
|
||||
{
|
||||
case 0:
|
||||
StringCopy(dst, gUnknown_084007C8);
|
||||
break;
|
||||
case 1:
|
||||
StringCopy(dst, gUnknown_084007CA);
|
||||
break;
|
||||
case 2:
|
||||
StringCopy(dst, gUnknown_084007CC);
|
||||
break;
|
||||
case 3:
|
||||
StringCopy(dst, gUnknown_084007CE);
|
||||
break;
|
||||
case 4:
|
||||
StringCopy(dst, gUnknown_084007D0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
+3884
File diff suppressed because it is too large
Load Diff
+59
-184
@@ -61,9 +61,9 @@ static void sub_8146440(u8 taskId);
|
||||
static void sub_8146480(u8 taskid);
|
||||
static void sub_81464E4(void);
|
||||
static void sub_8146600(u8 berry);
|
||||
// static void sub_81466A0(void);
|
||||
static void sub_81466A0(void);
|
||||
static void sub_81466E8(u8 taskId, s8 direction);
|
||||
// static void sub_8146798(u8 berry);
|
||||
static void sub_8146798(u8 berry);
|
||||
static void sub_8146810(s8 berry);
|
||||
static void sub_81468BC(void);
|
||||
|
||||
@@ -347,7 +347,7 @@ static void sub_8146600(u8 berry)
|
||||
gUnknown_0203932E[4] = sub_80A7E5C(208);
|
||||
}
|
||||
|
||||
void sub_81466A0(void)
|
||||
static void sub_81466A0(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
@@ -361,105 +361,36 @@ void sub_81466A0(void)
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((naked))
|
||||
static void sub_81466E8(u8 taskId, s8 direction)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r8\n\
|
||||
push {r7}\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r7, r0, 24\n\
|
||||
lsls r1, 24\n\
|
||||
lsrs r2, r1, 24\n\
|
||||
lsls r0, r7, 2\n\
|
||||
adds r0, r7\n\
|
||||
lsls r0, 3\n\
|
||||
ldr r1, _08146748 @ =gTasks + 0x8\n\
|
||||
adds r6, r0, r1\n\
|
||||
ldr r4, _0814674C @ =gBagPocketScrollStates\n\
|
||||
movs r0, 0xC\n\
|
||||
adds r0, r4\n\
|
||||
mov r8, r0\n\
|
||||
ldrb r1, [r0, 0x1]\n\
|
||||
ldrb r0, [r4, 0xC]\n\
|
||||
adds r1, r0\n\
|
||||
cmp r1, 0\n\
|
||||
bne _08146718\n\
|
||||
lsls r0, r2, 24\n\
|
||||
cmp r0, 0\n\
|
||||
blt _0814678C\n\
|
||||
_08146718:\n\
|
||||
adds r0, r1, 0x1\n\
|
||||
lsls r5, r2, 24\n\
|
||||
mov r1, r8\n\
|
||||
ldrb r1, [r1, 0x2]\n\
|
||||
cmp r0, r1\n\
|
||||
bne _08146728\n\
|
||||
cmp r5, 0\n\
|
||||
bgt _0814678C\n\
|
||||
_08146728:\n\
|
||||
movs r0, 0x5\n\
|
||||
bl PlaySE\n\
|
||||
mov r2, r8\n\
|
||||
ldrb r3, [r2, 0x1]\n\
|
||||
ldrb r4, [r4, 0xC]\n\
|
||||
mov r12, r4\n\
|
||||
adds r0, r3, r4\n\
|
||||
asrs r2, r5, 24\n\
|
||||
adds r1, r0, r2\n\
|
||||
cmp r1, 0\n\
|
||||
bge _08146750\n\
|
||||
negs r0, r0\n\
|
||||
strh r0, [r6, 0x2]\n\
|
||||
b _08146766\n\
|
||||
.align 2, 0\n\
|
||||
_08146748: .4byte gTasks + 0x8\n\
|
||||
_0814674C: .4byte gBagPocketScrollStates\n\
|
||||
_08146750:\n\
|
||||
mov r4, r8\n\
|
||||
ldrb r0, [r4, 0x2]\n\
|
||||
cmp r1, r0\n\
|
||||
blt _08146764\n\
|
||||
subs r0, r3\n\
|
||||
mov r1, r12\n\
|
||||
subs r0, r1\n\
|
||||
subs r0, 0x1\n\
|
||||
strh r0, [r6, 0x2]\n\
|
||||
b _08146766\n\
|
||||
_08146764:\n\
|
||||
strh r2, [r6, 0x2]\n\
|
||||
_08146766:\n\
|
||||
ldr r0, _08146780 @ =gTasks\n\
|
||||
lsls r1, r7, 2\n\
|
||||
adds r1, r7\n\
|
||||
lsls r1, 3\n\
|
||||
adds r1, r0\n\
|
||||
ldr r0, _08146784 @ =sub_8146798\n\
|
||||
str r0, [r1]\n\
|
||||
cmp r5, 0\n\
|
||||
bge _08146788\n\
|
||||
movs r2, 0x10\n\
|
||||
negs r2, r2\n\
|
||||
adds r0, r2, 0\n\
|
||||
b _0814678A\n\
|
||||
.align 2, 0\n\
|
||||
_08146780: .4byte gTasks\n\
|
||||
_08146784: .4byte sub_8146798\n\
|
||||
_08146788:\n\
|
||||
movs r0, 0x10\n\
|
||||
_0814678A:\n\
|
||||
strh r0, [r6]\n\
|
||||
_0814678C:\n\
|
||||
pop {r3}\n\
|
||||
mov r8, r3\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.syntax divided\n");
|
||||
u8 berryPocket = 3;
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos == 0
|
||||
&& direction < 0)
|
||||
return;
|
||||
if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + 1 == gBagPocketScrollStates[berryPocket].numSlots
|
||||
&& direction > 0)
|
||||
return;
|
||||
|
||||
PlaySE(SE_SELECT);
|
||||
if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction < 0)
|
||||
data[1] = -(gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos);
|
||||
else if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction >= gBagPocketScrollStates[berryPocket].numSlots)
|
||||
data[1] = gBagPocketScrollStates[berryPocket].numSlots - gBagPocketScrollStates[berryPocket].scrollTop - gBagPocketScrollStates[berryPocket].cursorPos - 1;
|
||||
else
|
||||
data[1] = direction;
|
||||
|
||||
gTasks[taskId].func = sub_8146798;
|
||||
|
||||
if (direction < 0)
|
||||
data[0] = -16;
|
||||
else
|
||||
data[0] = 16;
|
||||
|
||||
}
|
||||
|
||||
void sub_8146798(u8 taskId)
|
||||
static void sub_8146798(u8 taskId)
|
||||
{
|
||||
s16 *taskData = gTasks[taskId].data;
|
||||
|
||||
@@ -478,94 +409,38 @@ void sub_8146798(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__((naked))
|
||||
static void sub_8146810(s8 berry)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r6,lr}\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r3, r0, 24\n\
|
||||
adds r4, r3, 0\n\
|
||||
lsls r0, r3, 24\n\
|
||||
asrs r1, r0, 24\n\
|
||||
cmp r1, 0\n\
|
||||
ble _08146848\n\
|
||||
ldr r0, _08146840 @ =gBagPocketScrollStates\n\
|
||||
adds r4, r0, 0\n\
|
||||
adds r4, 0xC\n\
|
||||
ldrb r2, [r0, 0xC]\n\
|
||||
adds r1, r2, r1\n\
|
||||
adds r6, r0, 0\n\
|
||||
cmp r1, 0x7\n\
|
||||
ble _08146844\n\
|
||||
adds r0, r3, 0\n\
|
||||
adds r0, 0xF9\n\
|
||||
adds r0, r2, r0\n\
|
||||
ldrb r1, [r4, 0x1]\n\
|
||||
adds r0, r1\n\
|
||||
strb r0, [r4, 0x1]\n\
|
||||
movs r0, 0x7\n\
|
||||
b _0814686E\n\
|
||||
.align 2, 0\n\
|
||||
_08146840: .4byte gBagPocketScrollStates\n\
|
||||
_08146844:\n\
|
||||
adds r0, r2, r3\n\
|
||||
b _0814686E\n\
|
||||
_08146848:\n\
|
||||
ldr r0, _08146868 @ =gBagPocketScrollStates\n\
|
||||
adds r5, r0, 0\n\
|
||||
adds r5, 0xC\n\
|
||||
ldrb r2, [r0, 0xC]\n\
|
||||
adds r1, r2, r1\n\
|
||||
adds r6, r0, 0\n\
|
||||
cmp r1, 0\n\
|
||||
bge _0814686C\n\
|
||||
adds r0, r2, r3\n\
|
||||
ldrb r1, [r5, 0x1]\n\
|
||||
adds r0, r1\n\
|
||||
movs r1, 0\n\
|
||||
strb r0, [r5, 0x1]\n\
|
||||
strb r1, [r6, 0xC]\n\
|
||||
b _08146870\n\
|
||||
.align 2, 0\n\
|
||||
_08146868: .4byte gBagPocketScrollStates\n\
|
||||
_0814686C:\n\
|
||||
adds r0, r2, r4\n\
|
||||
_0814686E:\n\
|
||||
strb r0, [r6, 0xC]\n\
|
||||
_08146870:\n\
|
||||
ldr r2, _081468AC @ =gScriptItemId\n\
|
||||
movs r0, 0x3\n\
|
||||
lsls r0, 2\n\
|
||||
adds r0, r6\n\
|
||||
ldrb r1, [r0, 0x1]\n\
|
||||
ldrb r0, [r0]\n\
|
||||
adds r1, r0\n\
|
||||
ldr r0, _081468B0 @ =gCurrentBagPocketItemSlots\n\
|
||||
ldr r0, [r0]\n\
|
||||
lsls r1, 2\n\
|
||||
adds r1, r0\n\
|
||||
ldrh r0, [r1]\n\
|
||||
strh r0, [r2]\n\
|
||||
ldr r0, _081468B4 @ =gUnknown_0203932C\n\
|
||||
ldrb r1, [r0]\n\
|
||||
lsls r0, r1, 4\n\
|
||||
adds r0, r1\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, _081468B8 @ =gSprites\n\
|
||||
adds r0, r1\n\
|
||||
bl DestroySprite\n\
|
||||
bl sub_81466A0\n\
|
||||
bl sub_80A7DD4\n\
|
||||
pop {r4-r6}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.align 2, 0\n\
|
||||
_081468AC: .4byte gScriptItemId\n\
|
||||
_081468B0: .4byte gCurrentBagPocketItemSlots\n\
|
||||
_081468B4: .4byte gUnknown_0203932C\n\
|
||||
_081468B8: .4byte gSprites\n\
|
||||
.syntax divided\n");
|
||||
u8 berryPocket = 3;
|
||||
|
||||
if (berry > 0)
|
||||
{
|
||||
if (gBagPocketScrollStates[berryPocket].cursorPos + berry > 7)
|
||||
{
|
||||
gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos - 7 + berry;
|
||||
gBagPocketScrollStates[berryPocket].cursorPos = 7;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBagPocketScrollStates[berryPocket].cursorPos += berry;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBagPocketScrollStates[berryPocket].cursorPos + berry < 0)
|
||||
{
|
||||
gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos + berry;
|
||||
gBagPocketScrollStates[berryPocket].cursorPos = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gBagPocketScrollStates[berryPocket].cursorPos += berry;
|
||||
}
|
||||
}
|
||||
gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId;
|
||||
DestroySprite(&gSprites[gUnknown_0203932C]);
|
||||
sub_81466A0();
|
||||
sub_80A7DD4();
|
||||
}
|
||||
|
||||
static void sub_81468BC(void)
|
||||
|
||||
+7
-89
@@ -211,11 +211,10 @@ bool8 sub_8121E78(void)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
|
||||
{
|
||||
u16 r3;
|
||||
s32 i;
|
||||
u16 species;
|
||||
s32 i = 0;
|
||||
|
||||
if (GetMonData(pkmn, MON_DATA_IS_EGG))
|
||||
return FALSE;
|
||||
@@ -232,97 +231,16 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
|
||||
&& GetMonData(pkmn, MON_DATA_LEVEL) > 50)
|
||||
return FALSE;
|
||||
|
||||
r3 = GetMonData(pkmn, MON_DATA_SPECIES);
|
||||
// Can't stop the compiler from optimizing out the first index
|
||||
for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++)
|
||||
// Check if the pkmn is in the ban list
|
||||
species = GetMonData(pkmn, MON_DATA_SPECIES);
|
||||
while (gBattleTowerBanlist[i] != 0xFFFF)
|
||||
{
|
||||
if (gBattleTowerBanlist[i] == r3)
|
||||
if (gBattleTowerBanlist[i] == species)
|
||||
return FALSE;
|
||||
i++;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
|
||||
{
|
||||
asm_unified(
|
||||
"push {r4,lr}\n\
|
||||
adds r4, r0, 0\n\
|
||||
movs r1, 0x2D\n\
|
||||
bl GetMonData\n\
|
||||
cmp r0, 0\n\
|
||||
bne _0812207C\n\
|
||||
ldr r0, _08122058 @ =0x0201b000\n\
|
||||
ldr r1, _0812205C @ =0x00000263\n\
|
||||
adds r0, r1\n\
|
||||
ldrb r0, [r0]\n\
|
||||
cmp r0, 0\n\
|
||||
bne _08122060\n\
|
||||
adds r0, r4, 0\n\
|
||||
movs r1, 0x39\n\
|
||||
bl GetMonData\n\
|
||||
cmp r0, 0\n\
|
||||
beq _0812207C\n\
|
||||
b _081220B6\n\
|
||||
.align 2, 0\n\
|
||||
_08122058: .4byte 0x0201b000\n\
|
||||
_0812205C: .4byte 0x00000263\n\
|
||||
_08122060:\n\
|
||||
ldr r0, _08122080 @ =gSaveBlock2\n\
|
||||
ldr r1, _08122084 @ =0x00000554\n\
|
||||
adds r0, r1\n\
|
||||
ldrb r1, [r0]\n\
|
||||
movs r0, 0x1\n\
|
||||
ands r0, r1\n\
|
||||
cmp r0, 0\n\
|
||||
bne _08122088\n\
|
||||
adds r0, r4, 0\n\
|
||||
movs r1, 0x38\n\
|
||||
bl GetMonData\n\
|
||||
cmp r0, 0x32\n\
|
||||
bls _08122088\n\
|
||||
_0812207C:\n\
|
||||
movs r0, 0\n\
|
||||
b _081220B8\n\
|
||||
.align 2, 0\n\
|
||||
_08122080: .4byte gSaveBlock2\n\
|
||||
_08122084: .4byte 0x00000554\n\
|
||||
_08122088:\n\
|
||||
adds r0, r4, 0\n\
|
||||
movs r1, 0xB\n\
|
||||
bl GetMonData\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r3, r0, 16\n\
|
||||
ldr r1, _081220C0 @ =gBattleTowerBanlist\n\
|
||||
movs r0, 0\n\
|
||||
lsls r0, 1\n\
|
||||
adds r2, r0, r1\n\
|
||||
ldrh r0, [r2]\n\
|
||||
ldr r1, _081220C4 @ =0x0000ffff\n\
|
||||
cmp r0, r1\n\
|
||||
beq _081220B6\n\
|
||||
adds r4, r1, 0\n\
|
||||
adds r1, r2, 0\n\
|
||||
_081220A8:\n\
|
||||
ldrh r0, [r1]\n\
|
||||
cmp r0, r3\n\
|
||||
beq _0812207C\n\
|
||||
adds r1, 0x2\n\
|
||||
ldrh r0, [r1]\n\
|
||||
cmp r0, r4\n\
|
||||
bne _081220A8\n\
|
||||
_081220B6:\n\
|
||||
movs r0, 0x1\n\
|
||||
_081220B8:\n\
|
||||
pop {r4}\n\
|
||||
pop {r1}\n\
|
||||
bx r1\n\
|
||||
.align 2, 0\n\
|
||||
_081220C0: .4byte gBattleTowerBanlist\n\
|
||||
_081220C4: .4byte 0x0000ffff\n"
|
||||
);
|
||||
}
|
||||
#endif
|
||||
|
||||
static u8 sub_81220C8(void)
|
||||
{
|
||||
|
||||
+813
-1
@@ -1,7 +1,226 @@
|
||||
#include "global.h"
|
||||
#include "pokemon.h"
|
||||
#include "items.h"
|
||||
#include "decompress.h"
|
||||
#include "data2.h"
|
||||
#include "task.h"
|
||||
#include "script.h"
|
||||
#include "palette.h"
|
||||
#include "rom4.h"
|
||||
#include "main.h"
|
||||
#include "event_data.h"
|
||||
#include "sound.h"
|
||||
#include "songs.h"
|
||||
#include "text.h"
|
||||
#include "text_window.h"
|
||||
#include "string_util.h"
|
||||
#include "strings2.h"
|
||||
#include "menu.h"
|
||||
#include "naming_screen.h"
|
||||
#include "trig.h"
|
||||
#include "rng.h"
|
||||
|
||||
void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) {
|
||||
extern u8 ewram[];
|
||||
extern struct SpriteTemplate gUnknown_02024E8C;
|
||||
|
||||
struct EggHatchData
|
||||
{
|
||||
u8 eggSpriteID;
|
||||
u8 pokeSpriteID;
|
||||
u8 CB2_state;
|
||||
u8 CB2_PalCounter;
|
||||
u8 eggPartyID;
|
||||
struct Window window;
|
||||
u8 tileDataStartOffset;
|
||||
u8 unused_39;
|
||||
u8 eggShardVelocityID;
|
||||
};
|
||||
|
||||
struct EggHatchData* gEggHatchData;
|
||||
|
||||
extern const u32 gUnknown_08D00000[];
|
||||
extern const u32 gUnknown_08D00524[];
|
||||
extern const u32 gUnknown_0820CA98[];
|
||||
extern const u32 gUnknown_0820F798[];
|
||||
extern const u16 gUnknown_08D004E0[]; //palette
|
||||
extern const u16 gUnknown_0820C9F8[]; //palette
|
||||
extern const struct SpriteSheet sUnknown_0820A3B0;
|
||||
extern const struct SpriteSheet sUnknown_0820A3B8;
|
||||
extern const struct SpritePalette sUnknown_0820A3C0;
|
||||
|
||||
bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID);
|
||||
u8* GetMonNick(struct Pokemon* mon, u8* dst);
|
||||
u8 sav1_map_get_name(void);
|
||||
const struct CompressedSpritePalette* sub_8040990(struct Pokemon* mon); //gets pokemon palette address
|
||||
void sub_8080990(void);
|
||||
|
||||
static void Task_EggHatch(u8 taskID);
|
||||
static void CB2_EggHatch_0(void);
|
||||
static void CB2_EggHatch_1(void);
|
||||
static void SpriteCB_Egg_0(struct Sprite* sprite);
|
||||
static void SpriteCB_Egg_1(struct Sprite* sprite);
|
||||
static void SpriteCB_Egg_2(struct Sprite* sprite);
|
||||
static void SpriteCB_Egg_3(struct Sprite* sprite);
|
||||
static void SpriteCB_Egg_4(struct Sprite* sprite);
|
||||
static void SpriteCB_Egg_5(struct Sprite* sprite);
|
||||
static void SpriteCB_EggShard(struct Sprite* sprite);
|
||||
static void EggHatchPrintMessage2(u8* src);
|
||||
static void EggHatchPrintMessage1(u8* src);
|
||||
static bool8 EggHatchUpdateWindowText(void);
|
||||
static void CreateRandomEggShardSprite(void);
|
||||
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
|
||||
|
||||
// graphics
|
||||
|
||||
static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/palette.gbapal");
|
||||
static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp");
|
||||
static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
|
||||
|
||||
static const struct OamData sOamData_820A378 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.objMode = 0,
|
||||
.mosaic = 0,
|
||||
.bpp = 0,
|
||||
.shape = 0,
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = 2,
|
||||
.tileNum = 0,
|
||||
.priority = 1,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A380[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A388[] =
|
||||
{
|
||||
ANIMCMD_FRAME(16, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A390[] =
|
||||
{
|
||||
ANIMCMD_FRAME(32, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A398[] =
|
||||
{
|
||||
ANIMCMD_FRAME(48, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_820A3A0[] =
|
||||
{
|
||||
sSpriteAnim_820A380,
|
||||
sSpriteAnim_820A388,
|
||||
sSpriteAnim_820A390,
|
||||
sSpriteAnim_820A398,
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sUnknown_0820A3B0 =
|
||||
{
|
||||
.data = sEggHatchTiles,
|
||||
.size = 2048,
|
||||
.tag = 12345,
|
||||
};
|
||||
|
||||
static const struct SpriteSheet sUnknown_0820A3B8 =
|
||||
{
|
||||
.data = sEggShardTiles,
|
||||
.size = 128,
|
||||
.tag = 23456,
|
||||
};
|
||||
|
||||
static const struct SpritePalette sUnknown_0820A3C0 =
|
||||
{
|
||||
.data = sEggPalette,
|
||||
.tag = 54321
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_820A3C8 =
|
||||
{
|
||||
.tileTag = 12345,
|
||||
.paletteTag = 54321,
|
||||
.oam = &sOamData_820A378,
|
||||
.anims = sSpriteAnimTable_820A3A0,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCallbackDummy
|
||||
};
|
||||
|
||||
|
||||
static const struct OamData sOamData_820A3E0 =
|
||||
{
|
||||
.y = 0,
|
||||
.affineMode = 0,
|
||||
.objMode = 0,
|
||||
.mosaic = 0,
|
||||
.bpp = 0,
|
||||
.shape = 0,
|
||||
.x = 0,
|
||||
.matrixNum = 0,
|
||||
.size = 0,
|
||||
.tileNum = 0,
|
||||
.priority = 2,
|
||||
.paletteNum = 0,
|
||||
.affineParam = 0,
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A3E8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(0, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A3F0[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A3F8[] =
|
||||
{
|
||||
ANIMCMD_FRAME(2, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd sSpriteAnim_820A400[] =
|
||||
{
|
||||
ANIMCMD_FRAME(3, 5),
|
||||
ANIMCMD_END
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sSpriteAnimTable_820A408[] =
|
||||
{
|
||||
sSpriteAnim_820A3E8,
|
||||
sSpriteAnim_820A3F0,
|
||||
sSpriteAnim_820A3F8,
|
||||
sSpriteAnim_820A400,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate sSpriteTemplate_820A418 =
|
||||
{
|
||||
.tileTag = 23456,
|
||||
.paletteTag = 54321,
|
||||
.oam = &sOamData_820A3E0,
|
||||
.anims = sSpriteAnimTable_820A408,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = SpriteCB_EggShard
|
||||
};
|
||||
|
||||
// actual code
|
||||
|
||||
static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
|
||||
{
|
||||
u16 species;
|
||||
u32 personality, pokerus;
|
||||
u8 i, friendship, language, gameMet, markings;
|
||||
@@ -50,3 +269,596 @@ void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) {
|
||||
|
||||
*egg = *temp;
|
||||
}
|
||||
|
||||
static void AddHatchedMonToParty(u8 id)
|
||||
{
|
||||
u8 isEgg;
|
||||
u16 pokeNum;
|
||||
u8 name[12];
|
||||
u16 ball;
|
||||
u16 caughtLvl;
|
||||
u8 mapNameID;
|
||||
struct Pokemon* mon = &gPlayerParty[id];
|
||||
|
||||
CreatedHatchedMon(mon, &gEnemyParty[0]);
|
||||
isEgg = 0;
|
||||
SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
|
||||
|
||||
pokeNum = GetMonData(mon, MON_DATA_SPECIES);
|
||||
GetSpeciesName(name, pokeNum);
|
||||
SetMonData(mon, MON_DATA_NICKNAME, name);
|
||||
|
||||
pokeNum = SpeciesToNationalPokedexNum(pokeNum);
|
||||
GetNationalPokedexFlag(pokeNum, 2);
|
||||
GetNationalPokedexFlag(pokeNum, 3);
|
||||
|
||||
GetMonNick(mon, gStringVar1);
|
||||
|
||||
ball = ITEM_POKE_BALL;
|
||||
SetMonData(mon, MON_DATA_POKEBALL, (const u8*) &ball);
|
||||
|
||||
caughtLvl = 0;
|
||||
SetMonData(mon, MON_DATA_MET_LEVEL, (const u8*) &caughtLvl);
|
||||
|
||||
mapNameID = sav1_map_get_name();
|
||||
SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID);
|
||||
|
||||
MonRestorePP(mon);
|
||||
CalculateMonStats(mon);
|
||||
}
|
||||
|
||||
void ScriptHatchMon(void)
|
||||
{
|
||||
AddHatchedMonToParty(gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static bool8 sub_8042ABC(void* a, u8 b)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#else
|
||||
__attribute__((naked))
|
||||
static bool8 sub_8042ABC(void* a, u8 b)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r6,lr}\n\
|
||||
sub sp, 0x20\n\
|
||||
adds r5, r0, 0\n\
|
||||
lsls r4, r1, 24\n\
|
||||
lsrs r4, 24\n\
|
||||
lsls r0, r4, 2\n\
|
||||
adds r0, r4\n\
|
||||
lsls r0, 4\n\
|
||||
adds r0, r5, r0\n\
|
||||
mov r1, sp\n\
|
||||
bl GetBoxMonNick\n\
|
||||
lsls r0, r4, 3\n\
|
||||
subs r0, r4\n\
|
||||
lsls r1, r0, 3\n\
|
||||
adds r0, r5, r1\n\
|
||||
adds r0, 0xC0\n\
|
||||
ldrh r0, [r0]\n\
|
||||
cmp r0, 0\n\
|
||||
beq _08042B40\n\
|
||||
adds r0, r1, 0\n\
|
||||
adds r0, 0xA0\n\
|
||||
adds r5, r0\n\
|
||||
adds r6, r5, 0\n\
|
||||
adds r6, 0x2C\n\
|
||||
mov r0, sp\n\
|
||||
adds r1, r6, 0\n\
|
||||
bl StringCompareWithoutExtCtrlCodes\n\
|
||||
cmp r0, 0\n\
|
||||
bne _08042B08\n\
|
||||
ldr r0, _08042B30 @ =gSaveBlock2\n\
|
||||
adds r1, r5, 0\n\
|
||||
adds r1, 0x24\n\
|
||||
bl StringCompareWithoutExtCtrlCodes\n\
|
||||
cmp r0, 0\n\
|
||||
beq _08042B40\n\
|
||||
_08042B08:\n\
|
||||
ldr r0, _08042B34 @ =gStringVar1\n\
|
||||
mov r1, sp\n\
|
||||
bl StringCopy\n\
|
||||
ldr r4, _08042B38 @ =gStringVar2\n\
|
||||
adds r1, r5, 0\n\
|
||||
adds r1, 0x24\n\
|
||||
adds r0, r4, 0\n\
|
||||
bl StringCopy\n\
|
||||
ldr r0, _08042B3C @ =gStringVar3\n\
|
||||
adds r1, r6, 0\n\
|
||||
bl StringCopy\n\
|
||||
adds r0, r4, 0\n\
|
||||
bl SanitizeNameString\n\
|
||||
movs r0, 0x1\n\
|
||||
b _08042B42\n\
|
||||
.align 2, 0\n\
|
||||
_08042B30: .4byte gSaveBlock2\n\
|
||||
_08042B34: .4byte gStringVar1\n\
|
||||
_08042B38: .4byte gStringVar2\n\
|
||||
_08042B3C: .4byte gStringVar3\n\
|
||||
_08042B40:\n\
|
||||
movs r0, 0\n\
|
||||
_08042B42:\n\
|
||||
add sp, 0x20\n\
|
||||
pop {r4-r6}\n\
|
||||
pop {r1}\n\
|
||||
bx r1\n\
|
||||
.syntax divided");
|
||||
}
|
||||
|
||||
#endif // NONMATCHING
|
||||
|
||||
bool8 sub_8042B4C(void)
|
||||
{
|
||||
return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
|
||||
}
|
||||
|
||||
static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
|
||||
{
|
||||
u8 r5 = 0;
|
||||
u8 spriteID = 0;
|
||||
struct Pokemon* mon = NULL;
|
||||
|
||||
if (a0 == 0)
|
||||
{
|
||||
mon = &gPlayerParty[pokeID];
|
||||
r5 = 1;
|
||||
}
|
||||
if (a0 == 1)
|
||||
{
|
||||
mon = &gPlayerParty[pokeID];
|
||||
r5 = 3;
|
||||
}
|
||||
switch (switchID)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
u16 species = GetMonData(mon, MON_DATA_SPECIES);
|
||||
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
|
||||
HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,(u32)(&ewram[0]), gUnknown_081FAF4C[2 * a0 + 1], species, pid);
|
||||
LoadCompressedObjectPalette(sub_8040990(mon));
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
GetMonSpriteTemplate_803C56C(sub_8040990(mon)->tag, r5);
|
||||
spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6);
|
||||
gSprites[spriteID].invisible = 1;
|
||||
gSprites[spriteID].callback = SpriteCallbackDummy;
|
||||
break;
|
||||
}
|
||||
return spriteID;
|
||||
}
|
||||
|
||||
static void VBlankCB_EggHatch(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
void EggHatch(void)
|
||||
{
|
||||
ScriptContext2_Enable();
|
||||
CreateTask(Task_EggHatch, 10);
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
}
|
||||
|
||||
static void Task_EggHatch(u8 taskID)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
SetMainCallback2(CB2_EggHatch_0);
|
||||
gFieldCallback = sub_8080990;
|
||||
DestroyTask(taskID);
|
||||
}
|
||||
}
|
||||
|
||||
static void CB2_EggHatch_0(void)
|
||||
{
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
REG_DISPCNT = 0;
|
||||
gEggHatchData = (struct EggHatchData*)(&ewram[0x18000]);
|
||||
gEggHatchData->eggPartyID = gSpecialVar_0x8004;
|
||||
gEggHatchData->eggShardVelocityID = 0;
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
FreeAllSpritePalettes();
|
||||
SetVBlankCallback(VBlankCB_EggHatch);
|
||||
gMain.state++;
|
||||
gSpecialVar_0x8005 = GetCurrentMapMusic();
|
||||
break;
|
||||
case 1:
|
||||
SetUpWindowConfig(&gWindowConfig_81E6F84);
|
||||
InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84);
|
||||
gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20);
|
||||
LoadTextWindowGraphics(&gEggHatchData->window);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
LZDecompressVram(&gUnknown_08D00000, (void*)(VRAM));
|
||||
CpuSet(&gUnknown_08D00524, &ewram[0], 0x800);
|
||||
DmaCopy16(3, &ewram[0], (void*)(VRAM + 0x2800), 0x500);
|
||||
LoadCompressedPalette(&gUnknown_08D004E0, 0, 0x20);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
LoadSpriteSheet(&sUnknown_0820A3B0);
|
||||
LoadSpriteSheet(&sUnknown_0820A3B8);
|
||||
LoadSpritePalette(&sUnknown_0820A3C0);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
gEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5);
|
||||
AddHatchedMonToParty(gEggHatchData->eggPartyID);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 5:
|
||||
EggHatchCreateMonSprite(0, 0, gEggHatchData->eggPartyID);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 6:
|
||||
gEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gEggHatchData->eggPartyID);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
u32 offsetRead, offsetWrite;
|
||||
u32 offsetRead2, offsetWrite2;
|
||||
u32 size;
|
||||
|
||||
REG_BG2CNT = 0x4C06;
|
||||
LoadPalette(&gUnknown_0820C9F8, 0x10, 0xA0);
|
||||
|
||||
offsetRead = (u32)(&gUnknown_0820CA98);
|
||||
offsetWrite = (VRAM + 0x4000);
|
||||
size = 0x1300;
|
||||
while (TRUE)
|
||||
{
|
||||
DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000);
|
||||
offsetRead += 0x1000;
|
||||
offsetWrite += 0x1000;
|
||||
size -= 0x1000;
|
||||
if (size <= 0x1000)
|
||||
{
|
||||
DmaCopy16(3, offsetRead, (void *) (offsetWrite), size);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
offsetRead2 = (u32)(&gUnknown_0820F798);
|
||||
offsetWrite2 = (u32)(VRAM + 0x6000);
|
||||
DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000);
|
||||
gMain.state++;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
REG_BG1CNT = 0x501;
|
||||
|
||||
REG_BG0HOFS = 0;
|
||||
REG_BG0VOFS = 0;
|
||||
|
||||
REG_BG1HOFS = 0;
|
||||
REG_BG1VOFS = 0;
|
||||
|
||||
REG_BG2HOFS = 0;
|
||||
REG_BG2VOFS = 0;
|
||||
|
||||
SetMainCallback2(CB2_EggHatch_1);
|
||||
gEggHatchData->CB2_state = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void EggHatchSetMonNickname(void)
|
||||
{
|
||||
SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
|
||||
SetMainCallback2(c2_exit_to_overworld_2_switch);
|
||||
}
|
||||
|
||||
static void Task_EggHatchPlayBGM(u8 taskID)
|
||||
{
|
||||
if (gTasks[taskID].data[0] == 0)
|
||||
StopMapMusic();
|
||||
if (gTasks[taskID].data[0] == 1)
|
||||
PlayBGM(376);
|
||||
if (gTasks[taskID].data[0] > 60)
|
||||
{
|
||||
PlayBGM(377);
|
||||
DestroyTask(taskID);
|
||||
//return; task is destroyed, yet you increment the value?
|
||||
}
|
||||
gTasks[taskID].data[0]++;
|
||||
}
|
||||
|
||||
static void CB2_EggHatch_1(void)
|
||||
{
|
||||
switch (gEggHatchData->CB2_state)
|
||||
{
|
||||
case 0:
|
||||
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
|
||||
REG_DISPCNT = 0x1740;
|
||||
gEggHatchData->CB2_state++;
|
||||
CreateTask(Task_EggHatchPlayBGM, 5);
|
||||
break;
|
||||
case 1:
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gEggHatchData->CB2_PalCounter = 0;
|
||||
gEggHatchData->CB2_state++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (++gEggHatchData->CB2_PalCounter > 30)
|
||||
{
|
||||
gEggHatchData->CB2_state++;
|
||||
gSprites[gEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (gSprites[gEggHatchData->eggSpriteID].callback == SpriteCallbackDummy)
|
||||
gEggHatchData->CB2_state++;
|
||||
break;
|
||||
case 4:
|
||||
GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg);
|
||||
EggHatchPrintMessage2(gStringVar4);
|
||||
PlayFanfare(371);
|
||||
gEggHatchData->CB2_state++;
|
||||
break;
|
||||
case 5:
|
||||
if (IsFanfareTaskInactive())
|
||||
gEggHatchData->CB2_state++;
|
||||
break;
|
||||
case 6:
|
||||
if (IsFanfareTaskInactive())
|
||||
gEggHatchData->CB2_state++;
|
||||
break;
|
||||
case 7:
|
||||
GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1);
|
||||
StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt);
|
||||
EggHatchPrintMessage1(gStringVar4);
|
||||
gEggHatchData->CB2_state++;
|
||||
break;
|
||||
case 8:
|
||||
if (EggHatchUpdateWindowText())
|
||||
{
|
||||
MenuDrawTextWindow(22, 8, 27, 13);
|
||||
InitYesNoMenu(22, 8, 4);
|
||||
gEggHatchData->CB2_state++;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
{
|
||||
s8 menuInput;
|
||||
if ((menuInput = ProcessMenuInputNoWrap_()) != -2)
|
||||
{
|
||||
if (menuInput != -1 && menuInput != 1)
|
||||
{
|
||||
u16 species;
|
||||
u8 gender;
|
||||
u32 personality;
|
||||
|
||||
GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar3);
|
||||
species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES);
|
||||
gender = GetMonGender(&gPlayerParty[gEggHatchData->eggPartyID]);
|
||||
personality = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
|
||||
DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
|
||||
}
|
||||
else
|
||||
gEggHatchData->CB2_state++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||
gEggHatchData->CB2_state++;
|
||||
break;
|
||||
case 11:
|
||||
if (!gPaletteFade.active)
|
||||
SetMainCallback2(c2_exit_to_overworld_2_switch);
|
||||
break;
|
||||
}
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
static void SpriteCB_Egg_0(struct Sprite* sprite)
|
||||
{
|
||||
if (++sprite->data0 > 20)
|
||||
{
|
||||
sprite->callback = SpriteCB_Egg_1;
|
||||
sprite->data0 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data1 = (sprite->data1 + 20) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data1, 1);
|
||||
if (sprite->data0 == 15)
|
||||
{
|
||||
PlaySE(SE_BOWA);
|
||||
StartSpriteAnim(sprite, 1);
|
||||
CreateRandomEggShardSprite();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_Egg_1(struct Sprite* sprite)
|
||||
{
|
||||
if (++sprite->data2 > 30)
|
||||
{
|
||||
if (++sprite->data0 > 20)
|
||||
{
|
||||
sprite->callback = SpriteCB_Egg_2;
|
||||
sprite->data0 = 0;
|
||||
sprite->data2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data1 = (sprite->data1 + 20) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data1, 2);
|
||||
if (sprite->data0 == 15)
|
||||
{
|
||||
PlaySE(SE_BOWA);
|
||||
StartSpriteAnim(sprite, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_Egg_2(struct Sprite* sprite)
|
||||
{
|
||||
if (++sprite->data2 > 30)
|
||||
{
|
||||
if (++sprite->data0 > 38)
|
||||
{
|
||||
u16 species;
|
||||
|
||||
sprite->callback = SpriteCB_Egg_3;
|
||||
sprite->data0 = 0;
|
||||
species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES);
|
||||
gSprites[gEggHatchData->pokeSpriteID].pos2.x = 0;
|
||||
gSprites[gEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->data1 = (sprite->data1 + 20) & 0xFF;
|
||||
sprite->pos2.x = Sin(sprite->data1, 2);
|
||||
if (sprite->data0 == 15)
|
||||
{
|
||||
PlaySE(SE_BOWA);
|
||||
StartSpriteAnim(sprite, 2);
|
||||
CreateRandomEggShardSprite();
|
||||
CreateRandomEggShardSprite();
|
||||
}
|
||||
if (sprite->data0 == 30)
|
||||
PlaySE(SE_BOWA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_Egg_3(struct Sprite* sprite)
|
||||
{
|
||||
if (++sprite->data0 > 50)
|
||||
{
|
||||
sprite->callback = SpriteCB_Egg_4;
|
||||
sprite->data0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_Egg_4(struct Sprite* sprite)
|
||||
{
|
||||
s16 i;
|
||||
if (sprite->data0 == 0)
|
||||
BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF);
|
||||
if (sprite->data0 < 4u)
|
||||
{
|
||||
for (i = 0; i <= 3; i++)
|
||||
CreateRandomEggShardSprite();
|
||||
}
|
||||
sprite->data0++;
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
PlaySE(SE_TAMAGO);
|
||||
sprite->invisible = 1;
|
||||
sprite->callback = SpriteCB_Egg_5;
|
||||
sprite->data0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void SpriteCB_Egg_5(struct Sprite* sprite)
|
||||
{
|
||||
if (sprite->data0 == 0)
|
||||
{
|
||||
gSprites[gEggHatchData->pokeSpriteID].invisible = 0;
|
||||
StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1);
|
||||
}
|
||||
if (sprite->data0 == 8)
|
||||
BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF);
|
||||
if (sprite->data0 <= 9)
|
||||
gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1;
|
||||
if (sprite->data0 > 40)
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
sprite->data0++;
|
||||
}
|
||||
|
||||
static void SpriteCB_EggShard(struct Sprite* sprite)
|
||||
{
|
||||
sprite->data4 += sprite->data1;
|
||||
sprite->data5 += sprite->data2;
|
||||
|
||||
sprite->pos2.x = sprite->data4 / 256;
|
||||
sprite->pos2.y = sprite->data5 / 256;
|
||||
|
||||
sprite->data2 += sprite->data3;
|
||||
|
||||
if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
// Converts a number to Q8.8 fixed-point format
|
||||
#define Q_8_8(n) ((s16)((n) * 256))
|
||||
|
||||
static const s16 sEggShardVelocities[][2] =
|
||||
{
|
||||
{Q_8_8(-1.5), Q_8_8(-3.75)},
|
||||
{Q_8_8(-5), Q_8_8(-3)},
|
||||
{Q_8_8(3.5), Q_8_8(-3)},
|
||||
{Q_8_8(-4), Q_8_8(-3.75)},
|
||||
{Q_8_8(2), Q_8_8(-1.5)},
|
||||
{Q_8_8(-0.5), Q_8_8(-6.75)},
|
||||
{Q_8_8(5), Q_8_8(-2.25)},
|
||||
{Q_8_8(-1.5), Q_8_8(-3.75)},
|
||||
{Q_8_8(4.5), Q_8_8(-1.5)},
|
||||
{Q_8_8(-1), Q_8_8(-6.75)},
|
||||
{Q_8_8(4), Q_8_8(-2.25)},
|
||||
{Q_8_8(-3.5), Q_8_8(-3.75)},
|
||||
{Q_8_8(1), Q_8_8(-1.5)},
|
||||
{Q_8_8(-3.515625), Q_8_8(-6.75)},
|
||||
{Q_8_8(4.5), Q_8_8(-2.25)},
|
||||
{Q_8_8(-0.5), Q_8_8(-7.5)},
|
||||
{Q_8_8(1), Q_8_8(-4.5)},
|
||||
{Q_8_8(-2.5), Q_8_8(-2.25)},
|
||||
{Q_8_8(2.5), Q_8_8(-7.5)},
|
||||
};
|
||||
|
||||
static void CreateRandomEggShardSprite(void)
|
||||
{
|
||||
u16 spriteAnimIndex;
|
||||
|
||||
s16 velocity1 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][0];
|
||||
s16 velocity2 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][1];
|
||||
gEggHatchData->eggShardVelocityID++;
|
||||
spriteAnimIndex = Random() % 4;
|
||||
CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex);
|
||||
}
|
||||
|
||||
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex)
|
||||
{
|
||||
u8 spriteID = CreateSprite(&sSpriteTemplate_820A418, x, y, 4);
|
||||
gSprites[spriteID].data1 = data1;
|
||||
gSprites[spriteID].data2 = data2;
|
||||
gSprites[spriteID].data3 = data3;
|
||||
StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex);
|
||||
}
|
||||
|
||||
static void EggHatchPrintMessage1(u8* src)
|
||||
{
|
||||
sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
|
||||
}
|
||||
|
||||
static void EggHatchPrintMessage2(u8* src)
|
||||
{
|
||||
sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
|
||||
}
|
||||
|
||||
static bool8 EggHatchUpdateWindowText(void)
|
||||
{
|
||||
return sub_80035AC(&gEggHatchData->window);
|
||||
}
|
||||
|
||||
+1413
File diff suppressed because it is too large
Load Diff
Executable
+532
@@ -0,0 +1,532 @@
|
||||
#include "global.h"
|
||||
#include "gba/m4a_internal.h"
|
||||
#include "intro.h"
|
||||
#include "data2.h"
|
||||
#include "decompress.h"
|
||||
#include "hall_of_fame.h"
|
||||
#include "intro_credits_graphics.h"
|
||||
#include "libgncmultiboot.h"
|
||||
#include "link.h"
|
||||
#include "m4a.h"
|
||||
#include "main.h"
|
||||
#include "new_game.h"
|
||||
#include "palette.h"
|
||||
#include "rng.h"
|
||||
#include "save.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "species.h"
|
||||
#include "task.h"
|
||||
#include "title_screen.h"
|
||||
#include "trig.h"
|
||||
#include "unknown_task.h"
|
||||
|
||||
// define register constants for the inline asm
|
||||
asm(".include \"constants/gba_constants.inc\"\n");
|
||||
|
||||
struct UnknownStruct1
|
||||
{
|
||||
u8 var0_0:4;
|
||||
u8 var0_4:2;
|
||||
u8 var0_6:2;
|
||||
u8 var1;
|
||||
u8 var2;
|
||||
u8 var3;
|
||||
u16 var4;
|
||||
};
|
||||
|
||||
extern u8 gUnknown_0841225C;
|
||||
extern u8 gUnknown_084126DC;
|
||||
extern u8 gUnknown_084121FC;
|
||||
extern u8 gUnknown_084128D8;
|
||||
extern u8 gUnknown_08412EB4;
|
||||
extern u8 gUnknown_08412818;
|
||||
extern u8 gUnknown_08413184;
|
||||
extern u8 gUnknown_08413340;
|
||||
extern u8 gUnknown_084139C8;
|
||||
extern u8 gUnknown_08413300;
|
||||
extern u8 gUnknown_08413CCC;
|
||||
|
||||
extern const struct SpriteTemplate gSpriteTemplate_8416B3C;
|
||||
const extern struct CompressedSpriteSheet gUnknown_08416B54;
|
||||
const extern struct CompressedSpriteSheet gUnknown_08416BDC;
|
||||
|
||||
extern u16 gUnknown_02039358;
|
||||
extern s16 gUnknown_0203935A;
|
||||
extern s16 gUnknown_0203935C;
|
||||
extern u8 gReservedSpritePaletteCount;
|
||||
|
||||
void sub_8149248();
|
||||
void sub_8149264();
|
||||
|
||||
void load_intro_part2_graphics(u8 a)
|
||||
{
|
||||
LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000));
|
||||
LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800));
|
||||
LoadPalette(&gUnknown_084121FC, 240, 32);
|
||||
switch (a)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
|
||||
LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
|
||||
LoadPalette(&gUnknown_08412818, 0, 96);
|
||||
LoadCompressedObjectPic(&gUnknown_08416B54);
|
||||
LoadPalette(&gUnknown_08413184, 256, 32);
|
||||
sub_8149248();
|
||||
break;
|
||||
case 1:
|
||||
LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
|
||||
LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
|
||||
LoadPalette(&gUnknown_08413300, 0, 32);
|
||||
LoadCompressedObjectPic(&gUnknown_08416BDC);
|
||||
LoadPalette(&gUnknown_08413CCC, 256, 32);
|
||||
sub_8149264();
|
||||
break;
|
||||
}
|
||||
gUnknown_0203935C = 0;
|
||||
gReservedSpritePaletteCount = 8;
|
||||
}
|
||||
|
||||
void sub_8148C78(u8 a)
|
||||
{
|
||||
if (a == 1)
|
||||
{
|
||||
REG_BG3CNT = 0x603;
|
||||
REG_BG2CNT = 0x702;
|
||||
REG_BG1CNT = 0xF05;
|
||||
REG_DISPCNT = 0x1E40;
|
||||
}
|
||||
else
|
||||
{
|
||||
REG_BG3CNT = 0x603;
|
||||
REG_BG2CNT = 0x702;
|
||||
REG_BG1CNT = 0xF05;
|
||||
REG_DISPCNT = 0x1E40;
|
||||
}
|
||||
}
|
||||
|
||||
extern u8 gUnknown_084131C4;
|
||||
extern u8 gUnknown_084131A4;
|
||||
extern u8 gUnknown_0841221C;
|
||||
extern u8 gUnknown_08412878;
|
||||
extern u8 gUnknown_08413320;
|
||||
extern u8 gUnknown_0841223C;
|
||||
extern u8 gUnknown_08413E78;
|
||||
extern u8 gUnknown_08414084;
|
||||
extern u8 gUnknown_08413E38;
|
||||
const extern struct CompressedSpriteSheet gUnknown_08416C70;
|
||||
extern u8 gUnknown_08414064;
|
||||
extern struct UnknownStruct1 gUnknown_08416B94;
|
||||
extern struct UnknownStruct1 gUnknown_08416C10;
|
||||
extern struct UnknownStruct1 gUnknown_08416C8C;
|
||||
const extern union AnimCmd *const gSpriteAnimTable_8416B84;
|
||||
const extern union AnimCmd *const gSpriteAnimTable_8416C04;
|
||||
const extern union AnimCmd *const gSpriteAnimTable_8416C88;
|
||||
const extern struct SpriteTemplate gSpriteTemplate_8416CDC;
|
||||
const extern struct SpriteTemplate gSpriteTemplate_Brendan;
|
||||
const extern struct SpriteTemplate gSpriteTemplate_8416CF4;
|
||||
const extern struct SpriteTemplate gSpriteTemplate_May;
|
||||
const extern struct SpriteTemplate gSpriteTemplate_8416D7C;
|
||||
const extern struct SpriteTemplate gSpriteTemplate_8416D94;
|
||||
|
||||
void sub_8149280();
|
||||
|
||||
void sub_8148CB0(u8 a)
|
||||
{
|
||||
LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000));
|
||||
LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800));
|
||||
switch (a)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
LoadPalette(&gUnknown_084121FC, 240, 32);
|
||||
LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
|
||||
LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
|
||||
LoadPalette(&gUnknown_08412818, 0, 96);
|
||||
LoadCompressedObjectPic(&gUnknown_08416B54);
|
||||
LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
|
||||
LoadPalette(&gUnknown_08413184, 256, 32);
|
||||
sub_8149248();
|
||||
break;
|
||||
case 1:
|
||||
LoadPalette(&gUnknown_0841221C, 240, 32);
|
||||
LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
|
||||
LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
|
||||
LoadPalette(&gUnknown_08412878, 0, 96);
|
||||
LoadCompressedObjectPic(&gUnknown_08416B54);
|
||||
LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
|
||||
LoadPalette(&gUnknown_084131A4, 256, 32);
|
||||
sub_8149248();
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
LoadPalette(&gUnknown_0841221C, 240, 32);
|
||||
LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
|
||||
LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
|
||||
LoadPalette(&gUnknown_08413320, 0, 32);
|
||||
LoadCompressedObjectPic(&gUnknown_08416BDC);
|
||||
LoadPalette(&gUnknown_08413320, 256, 32);
|
||||
sub_8149264();
|
||||
break;
|
||||
case 4:
|
||||
LoadPalette(&gUnknown_0841223C, 240, 32);
|
||||
LZ77UnCompVram(&gUnknown_08413E78, (void *)(VRAM));
|
||||
LZ77UnCompVram(&gUnknown_08414084, (void *)(VRAM + 0x3000));
|
||||
LoadPalette(&gUnknown_08413E38, 0, 64);
|
||||
LoadCompressedObjectPic(&gUnknown_08416C70);
|
||||
LoadPalette(&gUnknown_08414064, 256, 32);
|
||||
sub_8149280();
|
||||
break;
|
||||
}
|
||||
gReservedSpritePaletteCount = 8;
|
||||
gUnknown_0203935C = 0;
|
||||
}
|
||||
|
||||
void sub_8148E90(u8 a)
|
||||
{
|
||||
REG_BG3CNT = 0x603;
|
||||
REG_BG2CNT = 0x702;
|
||||
REG_BG1CNT = 0xF05;
|
||||
REG_DISPCNT = 0x1F40;
|
||||
}
|
||||
|
||||
u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d)
|
||||
{
|
||||
u8 taskId = CreateTask(&sub_8148F3C, 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_8148F3C(taskId);
|
||||
return taskId;
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
void sub_8148F3C(u8 taskId)
|
||||
{
|
||||
register u32 r4 asm("r4");
|
||||
s32 r2;
|
||||
|
||||
r4 = (u16)gTasks[taskId].data[1] << 16;
|
||||
if (r4 != 0)
|
||||
{
|
||||
r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12);
|
||||
gTasks[taskId].data[2] = r2 >> 16;
|
||||
gTasks[taskId].data[3] = r2;
|
||||
REG_BG1HOFS = gTasks[taskId].data[2];
|
||||
REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358;
|
||||
}
|
||||
|
||||
r4 = (u16)gTasks[taskId].data[4] << 16;
|
||||
if (r4 != 0)
|
||||
{
|
||||
r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12);
|
||||
gTasks[taskId].data[5] = r2 >> 16;
|
||||
gTasks[taskId].data[3] = r2;
|
||||
REG_BG2HOFS = gTasks[taskId].data[5];
|
||||
if (gTasks[taskId].data[0] != 0)
|
||||
REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358;
|
||||
else
|
||||
REG_BG2VOFS = gUnknown_02039358;
|
||||
}
|
||||
|
||||
r4 = (u16)gTasks[taskId].data[7] << 16;
|
||||
if (r4 != 0)
|
||||
{
|
||||
r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);;
|
||||
gTasks[taskId].data[8] = r2 >> 16;
|
||||
gTasks[taskId].data[9] = r2;
|
||||
REG_BG3HOFS = gTasks[taskId].data[8];
|
||||
REG_BG3VOFS = gUnknown_02039358;
|
||||
}
|
||||
}
|
||||
#else
|
||||
__attribute__((naked))
|
||||
void sub_8148F3C(u8 taskId)
|
||||
{
|
||||
asm(".syntax unified\n\
|
||||
push {r4-r6,lr}\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r5, r0, 24\n\
|
||||
ldr r1, _08148FB4 @ =gTasks\n\
|
||||
lsls r0, r5, 2\n\
|
||||
adds r0, r5\n\
|
||||
lsls r0, 3\n\
|
||||
adds r3, r0, r1\n\
|
||||
ldrh r0, [r3, 0xA]\n\
|
||||
lsls r4, r0, 16\n\
|
||||
adds r6, r1, 0\n\
|
||||
cmp r4, 0\n\
|
||||
beq _08148F7C\n\
|
||||
movs r1, 0xC\n\
|
||||
ldrsh r0, [r3, r1]\n\
|
||||
lsls r0, 16\n\
|
||||
ldrh r1, [r3, 0xE]\n\
|
||||
adds r2, r0, r1\n\
|
||||
lsrs r0, r4, 12\n\
|
||||
subs r2, r0\n\
|
||||
asrs r1, r2, 16\n\
|
||||
strh r1, [r3, 0xC]\n\
|
||||
strh r2, [r3, 0xE]\n\
|
||||
ldr r0, _08148FB8 @ =REG_BG1HOFS\n\
|
||||
strh r1, [r0]\n\
|
||||
ldr r2, _08148FBC @ =REG_BG1VOFS\n\
|
||||
ldr r1, _08148FC0 @ =gUnknown_02039358\n\
|
||||
ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
|
||||
ldrh r0, [r0]\n\
|
||||
ldrh r1, [r1]\n\
|
||||
adds r0, r1\n\
|
||||
strh r0, [r2]\n\
|
||||
_08148F7C:\n\
|
||||
ldrh r0, [r3, 0x10]\n\
|
||||
lsls r4, r0, 16\n\
|
||||
cmp r4, 0\n\
|
||||
beq _08148FD8\n\
|
||||
movs r1, 0x12\n\
|
||||
ldrsh r0, [r3, r1]\n\
|
||||
lsls r0, 16\n\
|
||||
ldrh r1, [r3, 0x14]\n\
|
||||
adds r2, r0, r1\n\
|
||||
lsrs r0, r4, 12\n\
|
||||
subs r2, r0\n\
|
||||
asrs r1, r2, 16\n\
|
||||
strh r1, [r3, 0x12]\n\
|
||||
strh r2, [r3, 0x14]\n\
|
||||
ldr r0, _08148FC8 @ =REG_BG2HOFS\n\
|
||||
strh r1, [r0]\n\
|
||||
movs r1, 0x8\n\
|
||||
ldrsh r0, [r3, r1]\n\
|
||||
cmp r0, 0\n\
|
||||
beq _08148FD0\n\
|
||||
ldr r2, _08148FCC @ =REG_BG2VOFS\n\
|
||||
ldr r1, _08148FC0 @ =gUnknown_02039358\n\
|
||||
ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
|
||||
ldrh r0, [r0]\n\
|
||||
ldrh r1, [r1]\n\
|
||||
adds r0, r1\n\
|
||||
strh r0, [r2]\n\
|
||||
b _08148FD8\n\
|
||||
.align 2, 0\n\
|
||||
_08148FB4: .4byte gTasks\n\
|
||||
_08148FB8: .4byte REG_BG1HOFS\n\
|
||||
_08148FBC: .4byte REG_BG1VOFS\n\
|
||||
_08148FC0: .4byte gUnknown_02039358\n\
|
||||
_08148FC4: .4byte gUnknown_0203935A\n\
|
||||
_08148FC8: .4byte REG_BG2HOFS\n\
|
||||
_08148FCC: .4byte REG_BG2VOFS\n\
|
||||
_08148FD0:\n\
|
||||
ldr r0, _08149010 @ =REG_BG2VOFS\n\
|
||||
ldr r1, _08149014 @ =gUnknown_02039358\n\
|
||||
ldrh r1, [r1]\n\
|
||||
strh r1, [r0]\n\
|
||||
_08148FD8:\n\
|
||||
lsls r0, r5, 2\n\
|
||||
adds r0, r5\n\
|
||||
lsls r0, 3\n\
|
||||
adds r3, r0, r6\n\
|
||||
ldrh r0, [r3, 0x16]\n\
|
||||
lsls r4, r0, 16\n\
|
||||
cmp r4, 0\n\
|
||||
beq _08149008\n\
|
||||
movs r1, 0x18\n\
|
||||
ldrsh r0, [r3, r1]\n\
|
||||
lsls r0, 16\n\
|
||||
ldrh r1, [r3, 0x1A]\n\
|
||||
adds r2, r0, r1\n\
|
||||
lsrs r0, r4, 12\n\
|
||||
subs r2, r0\n\
|
||||
asrs r1, r2, 16\n\
|
||||
strh r1, [r3, 0x18]\n\
|
||||
strh r2, [r3, 0x1A]\n\
|
||||
ldr r0, _08149018 @ =REG_BG3HOFS\n\
|
||||
strh r1, [r0]\n\
|
||||
ldr r1, _0814901C @ =REG_BG3VOFS\n\
|
||||
ldr r0, _08149014 @ =gUnknown_02039358\n\
|
||||
ldrh r0, [r0]\n\
|
||||
strh r0, [r1]\n\
|
||||
_08149008:\n\
|
||||
pop {r4-r6}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.align 2, 0\n\
|
||||
_08149010: .4byte REG_BG2VOFS\n\
|
||||
_08149014: .4byte gUnknown_02039358\n\
|
||||
_08149018: .4byte REG_BG3HOFS\n\
|
||||
_0814901C: .4byte REG_BG3VOFS\n\
|
||||
.syntax divided\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
void sub_8149020(u8 mode)
|
||||
{
|
||||
u16 var1;
|
||||
u16 var2;
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
/* stuff */
|
||||
if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
|
||||
break;
|
||||
if (gMain.vblankCounter1 & 4)
|
||||
{
|
||||
var1 = gPlttBufferUnfaded[9];
|
||||
var2 = gPlttBufferUnfaded[10];
|
||||
}
|
||||
else
|
||||
{
|
||||
var1 = gPlttBufferUnfaded[10];
|
||||
var2 = gPlttBufferUnfaded[9];
|
||||
}
|
||||
LoadPalette(&var1, 9, 2);
|
||||
LoadPalette(&var2, 10, 2);
|
||||
break;
|
||||
case 2:
|
||||
if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
|
||||
break;
|
||||
if (gMain.vblankCounter1 & 4)
|
||||
{
|
||||
var1 = 0x3D27;
|
||||
var2 = 0x295;
|
||||
}
|
||||
else
|
||||
{
|
||||
var1 = 0x31C;
|
||||
var2 = 0x3D27;
|
||||
}
|
||||
LoadPalette(&var1, 12, 2);
|
||||
LoadPalette(&var2, 13, 2);
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_814910C(struct Sprite *sprite)
|
||||
{
|
||||
if (gUnknown_0203935C)
|
||||
{
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
else
|
||||
{
|
||||
s32 var = ((sprite->pos1.x << 16) | (u16)sprite->data2) + (u16)sprite->data1;
|
||||
sprite->pos1.x = var >> 16;
|
||||
sprite->data2 = var;
|
||||
if (sprite->pos1.x > 255) sprite->pos1.x = 0xFFE0;
|
||||
if (sprite->data0)
|
||||
{
|
||||
sprite->pos2.y = -(gUnknown_02039358 + gUnknown_0203935A);
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->pos2.y = -gUnknown_02039358;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8149174(u8 a, struct UnknownStruct1 *b, const union AnimCmd *const *c, u8 d)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
for(i = 0; i < d; i++)
|
||||
{
|
||||
u8 sprite = CreateSprite(&gSpriteTemplate_8416B3C, b[i].var1, b[i].var2, b[i].var3);
|
||||
CalcCenterToCornerVec(&gSprites[sprite], b[i].var0_4, b[i].var0_6, 0);
|
||||
gSprites[sprite].oam.priority = 3;
|
||||
gSprites[sprite].oam.shape = b[i].var0_4;
|
||||
gSprites[sprite].oam.size = b[i].var0_6;
|
||||
gSprites[sprite].oam.paletteNum = 0;
|
||||
gSprites[sprite].anims = c;
|
||||
StartSpriteAnim(&gSprites[sprite], b[i].var0_0);
|
||||
gSprites[sprite].data0 = a;
|
||||
gSprites[sprite].data1 = b[i].var4;
|
||||
gSprites[sprite].data2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8149248()
|
||||
{
|
||||
sub_8149174(0, &gUnknown_08416B94, &gSpriteAnimTable_8416B84, 9);
|
||||
}
|
||||
|
||||
void sub_8149264()
|
||||
{
|
||||
sub_8149174(1, &gUnknown_08416C10, &gSpriteAnimTable_8416C04, 12);
|
||||
}
|
||||
|
||||
void sub_8149280()
|
||||
{
|
||||
sub_8149174(1, &gUnknown_08416C8C, &gSpriteAnimTable_8416C88, 6);
|
||||
}
|
||||
|
||||
void nullsub_82()
|
||||
{
|
||||
}
|
||||
|
||||
void sub_81492A0(struct Sprite* sprite)
|
||||
{
|
||||
sprite->invisible = gSprites[sprite->data0].invisible;
|
||||
sprite->pos1.x = gSprites[sprite->data0].pos1.x;
|
||||
sprite->pos1.y = gSprites[sprite->data0].pos1.y + 8;
|
||||
sprite->pos2.x = gSprites[sprite->data0].pos2.x;
|
||||
sprite->pos2.y = gSprites[sprite->data0].pos2.y;
|
||||
}
|
||||
|
||||
|
||||
|
||||
u8 intro_create_brendan_sprite(s16 a, s16 b)
|
||||
{
|
||||
u8 sprite = CreateSprite(&gSpriteTemplate_8416CDC, a, b, 0);
|
||||
u8 brendan = CreateSprite(&gSpriteTemplate_Brendan, a, b + 8, 1);
|
||||
gSprites[brendan].data0 = sprite;
|
||||
return sprite;
|
||||
}
|
||||
|
||||
u8 intro_create_may_sprite(s16 a, s16 b)
|
||||
{
|
||||
u8 sprite = CreateSprite(&gSpriteTemplate_8416CF4, a, b, 0);
|
||||
u8 may = CreateSprite(&gSpriteTemplate_May, a, b + 8, 1);
|
||||
gSprites[may].data0 = sprite;
|
||||
return sprite;
|
||||
}
|
||||
|
||||
void nullsub_83()
|
||||
{
|
||||
}
|
||||
|
||||
void sub_81493C4(struct Sprite* sprite)
|
||||
{
|
||||
sprite->invisible = gSprites[sprite->data0].invisible;
|
||||
sprite->pos1.y = gSprites[sprite->data0].pos1.y;
|
||||
sprite->pos2.x = gSprites[sprite->data0].pos2.x;
|
||||
sprite->pos2.y = gSprites[sprite->data0].pos2.y;
|
||||
}
|
||||
|
||||
u8 intro_create_latios_sprite(s16 a, s16 b)
|
||||
{
|
||||
u8 sprite = CreateSprite(&gSpriteTemplate_8416D7C, a - 32, b, 2);
|
||||
u8 latios = CreateSprite(&gSpriteTemplate_8416D7C, a + 32, b, 2);
|
||||
gSprites[latios].data0 = sprite;
|
||||
StartSpriteAnim(&gSprites[latios], 1);
|
||||
gSprites[latios].callback = &sub_81493C4;
|
||||
return sprite;
|
||||
}
|
||||
|
||||
u8 intro_create_latias_sprite(s16 a, s16 b)
|
||||
{
|
||||
u8 sprite = CreateSprite(&gSpriteTemplate_8416D94, a - 32, b, 2);
|
||||
u8 latios = CreateSprite(&gSpriteTemplate_8416D94, a + 32, b, 2);
|
||||
gSprites[latios].data0 = sprite;
|
||||
StartSpriteAnim(&gSprites[latios], 1);
|
||||
gSprites[latios].callback = &sub_81493C4;
|
||||
return sprite;
|
||||
}
|
||||
@@ -56,14 +56,6 @@ extern void sub_804E990(u8);
|
||||
extern void sub_802E424(u8);
|
||||
extern void sub_8064E2C(void);
|
||||
|
||||
struct PocketScrollState
|
||||
{
|
||||
u8 cursorPos;
|
||||
u8 scrollTop;
|
||||
u8 numSlots;
|
||||
u8 cursorMax;
|
||||
};
|
||||
|
||||
struct UnknownStruct2
|
||||
{
|
||||
u8 unk0;
|
||||
|
||||
+1081
File diff suppressed because it is too large
Load Diff
+3
-2
@@ -2,7 +2,6 @@
|
||||
#include "link.h"
|
||||
#include "battle.h"
|
||||
#include "berry.h"
|
||||
#include "berry_blender.h"
|
||||
#include "hall_of_fame.h"
|
||||
#include "item_use.h"
|
||||
#include "main.h"
|
||||
@@ -42,6 +41,8 @@ extern u16 gBattleTypeFlags;
|
||||
|
||||
extern u16 word_3004858;
|
||||
|
||||
extern void Blender_SetBankBerryData(u8 bank, u16 itemID);
|
||||
|
||||
static void InitLinkTestBG(u8, u8, u8, u8);
|
||||
void InitLinkTestBG_Unused(u8, u8, u8, u8);
|
||||
void LinkTestScreen();
|
||||
@@ -556,7 +557,7 @@ static void ProcessRecvCmds(u8 unusedParam)
|
||||
sub_8007E24();
|
||||
break;
|
||||
case 0xAAAB:
|
||||
sub_80516C4(i, gRecvCmds[1][i]);
|
||||
Blender_SetBankBerryData(i, gRecvCmds[1][i]);
|
||||
break;
|
||||
case 0xCCCC:
|
||||
#if defined(ENGLISH)
|
||||
|
||||
+39
-42
@@ -1024,17 +1024,17 @@ void sub_809D7E8(struct Sprite *);
|
||||
u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct MonIconSpriteTemplate iconTemplate;
|
||||
struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
|
||||
struct MonIconSpriteTemplate iconTemplate =
|
||||
{
|
||||
.oam = &sMonIconOamData,
|
||||
.image = gMonIconTable[species],
|
||||
.anims = sMonIconAnims,
|
||||
.affineAnims = sMonIconAffineAnims,
|
||||
.callback = callback,
|
||||
.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
|
||||
};
|
||||
|
||||
iconTemplatePtr->oam = &sMonIconOamData;
|
||||
iconTemplatePtr->image = gMonIconTable[species];
|
||||
iconTemplatePtr->anims = sMonIconAnims;
|
||||
iconTemplatePtr->affineAnims = sMonIconAffineAnims;
|
||||
iconTemplatePtr->callback = callback;
|
||||
iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
|
||||
|
||||
spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
|
||||
spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
|
||||
|
||||
UpdateMonIconFrame(&gSprites[spriteId]);
|
||||
|
||||
@@ -1067,17 +1067,17 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
|
||||
u8 sub_809D3A4(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
|
||||
{
|
||||
u8 spriteId;
|
||||
struct MonIconSpriteTemplate iconTemplate;
|
||||
struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
|
||||
struct MonIconSpriteTemplate iconTemplate =
|
||||
{
|
||||
.oam = &sMonIconOamData,
|
||||
.image = gMonIconTable[species],
|
||||
.anims = sMonIconAnims,
|
||||
.affineAnims = sMonIconAffineAnims,
|
||||
.callback = callback,
|
||||
.paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
|
||||
};
|
||||
|
||||
iconTemplatePtr->oam = &sMonIconOamData;
|
||||
iconTemplatePtr->image = gMonIconTable[species];
|
||||
iconTemplatePtr->anims = sMonIconAnims;
|
||||
iconTemplatePtr->affineAnims = sMonIconAffineAnims;
|
||||
iconTemplatePtr->callback = callback;
|
||||
iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
|
||||
|
||||
spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
|
||||
spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
|
||||
|
||||
UpdateMonIconFrame(&gSprites[spriteId]);
|
||||
|
||||
@@ -1197,7 +1197,7 @@ void sub_809D62C(struct Sprite *sprite)
|
||||
UpdateMonIconFrame(sprite);
|
||||
}
|
||||
|
||||
// TODO: try to find a way to avoid using goto and asm statement
|
||||
// TODO: try to find a way to avoid using asm statement
|
||||
u8 UpdateMonIconFrame(struct Sprite *sprite)
|
||||
{
|
||||
u8 result = 0;
|
||||
@@ -1206,34 +1206,31 @@ u8 UpdateMonIconFrame(struct Sprite *sprite)
|
||||
{
|
||||
s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue;
|
||||
|
||||
if (frame != -2)
|
||||
switch (frame)
|
||||
{
|
||||
if (frame != -1)
|
||||
goto copy;
|
||||
goto end;
|
||||
case -1:
|
||||
break;
|
||||
case -2:
|
||||
sprite->animCmdIndex = 0;
|
||||
break;
|
||||
default:
|
||||
RequestSpriteCopy(
|
||||
(u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame,
|
||||
(u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
|
||||
sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
|
||||
{
|
||||
register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
|
||||
sprite->animDelayCounter = duration;
|
||||
}
|
||||
sprite->animCmdIndex++;
|
||||
result = sprite->animCmdIndex;
|
||||
break;
|
||||
}
|
||||
|
||||
sprite->animCmdIndex = 0;
|
||||
goto end;
|
||||
|
||||
copy:
|
||||
RequestSpriteCopy(
|
||||
(u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame,
|
||||
(u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
|
||||
sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
|
||||
{
|
||||
register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
|
||||
sprite->animDelayCounter = duration;
|
||||
}
|
||||
sprite->animCmdIndex++;
|
||||
result = sprite->animCmdIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprite->animDelayCounter--;
|
||||
}
|
||||
|
||||
end:
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+2
-33
@@ -28,32 +28,7 @@ gUnknown_03000500: @ 3000500
|
||||
gUnknown_03000508: @ 3000508
|
||||
.space 0x8
|
||||
|
||||
@ berry_blender
|
||||
|
||||
gUnknown_03000510: @ 3000510
|
||||
.space 0x10
|
||||
|
||||
gUnknown_03000520: @ 3000520
|
||||
.space 0xC
|
||||
|
||||
gUnknown_0300052C: @ 300052C
|
||||
.space 0x2
|
||||
|
||||
gUnknown_0300052E: @ 300052E
|
||||
.space 0x2
|
||||
|
||||
gUnknown_03000530: @ 3000530
|
||||
.space 0x18
|
||||
|
||||
gUnknown_03000548: @ 3000548
|
||||
.space 0x14
|
||||
|
||||
gUnknown_0300055C: @ 300055C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03000560: @ 3000560
|
||||
.space 0x1C
|
||||
|
||||
.include "src/berry_blender.o"
|
||||
.include "src/play_time.o"
|
||||
.include "src/rom4.o"
|
||||
|
||||
@@ -123,13 +98,7 @@ gUnknown_03000748: @ 3000748
|
||||
.space 0x4
|
||||
|
||||
.include "src/field_specials.o"
|
||||
|
||||
@ learn_move
|
||||
|
||||
.align 2
|
||||
gUnknown_030007B0: @ 30007B0
|
||||
.space 0x4
|
||||
|
||||
.include "src/learn_move.o"
|
||||
.include "src/player_pc.o"
|
||||
.include "asm/m4a_1.o"
|
||||
.include "src/agb_flash.o"
|
||||
|
||||
+2
-21
@@ -106,13 +106,7 @@ gUnknown_0300434C: @ 300434C
|
||||
|
||||
.include "pokemon_1.o"
|
||||
.include "rng.o"
|
||||
|
||||
@ egg_hatch
|
||||
|
||||
.align 2
|
||||
gUnknown_0300481C: @ 300481C
|
||||
.space 0x4
|
||||
|
||||
.include "egg_hatch.o"
|
||||
.include "load_save.o"
|
||||
|
||||
@ trade
|
||||
@@ -123,20 +117,7 @@ gUnknown_03004824: @ 3004824
|
||||
gUnknown_03004828: @ 3004828
|
||||
.space 0x8
|
||||
|
||||
@ berry_blender
|
||||
|
||||
gUnknown_03004830: @ 3004830
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03004834: @ 3004834
|
||||
.space 0xC
|
||||
|
||||
gUnknown_03004840: @ 3004840
|
||||
.space 0x14
|
||||
|
||||
gUnknown_03004854: @ 3004854
|
||||
.space 0x4
|
||||
|
||||
.include "berry_blender.o"
|
||||
.include "rom4.o"
|
||||
.include "fieldmap.o"
|
||||
.include "field_camera.o"
|
||||
|
||||
+2
-21
@@ -308,20 +308,7 @@ gUnknown_02029700: @ 2029700
|
||||
gUnknown_020297D8: @ 20297D8
|
||||
.space 0x4
|
||||
|
||||
@ berry_blender
|
||||
|
||||
gUnknown_020297DC: @ 20297DC
|
||||
.space 0x4
|
||||
|
||||
gUnknown_020297E0: @ 20297E0
|
||||
.space 0x4
|
||||
|
||||
gUnknown_020297E4: @ 20297E4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_020297E8: @ 20297E8
|
||||
.space 0x4
|
||||
|
||||
.include "src/berry_blender.o"
|
||||
.include "src/new_game.o"
|
||||
.include "src/rom4.o"
|
||||
.include "src/fieldmap.o"
|
||||
@@ -662,13 +649,7 @@ gUnknown_0203927D: @ 203927D
|
||||
.include "src/use_pokeblock.o"
|
||||
.include "src/player_pc.o"
|
||||
.include "src/intro.o"
|
||||
|
||||
@ hall_of_fame
|
||||
|
||||
.align 2
|
||||
gUnknown_0203931C: @ 203931C
|
||||
.space 0x4
|
||||
|
||||
.include "src/hall_of_fame.o"
|
||||
.include "src/credits.o"
|
||||
.include "src/lottery_corner.o"
|
||||
.include "src/berry_tag_screen.o"
|
||||
|
||||
Reference in New Issue
Block a user