From ecc8dee645858c909f97cc27cac2b5399b72090a Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Sun, 14 Jan 2018 18:10:52 +0100 Subject: testing something --- src/battle/battle_interface.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 97568d254..5bdbc2506 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -29,6 +29,11 @@ struct UnknownStruct7 u8 filler0[0x180]; }; +struct TileData +{ + u32 data[8]; +}; + extern u8 gDisplayedStringBattle[]; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; @@ -59,9 +64,9 @@ extern void *const gUnknown_0820A854[]; extern void *const gUnknown_0820A85C[]; extern void *const gUnknown_0820A87C[]; extern void *const gUnknown_0820A894[]; -extern void *const gUnknown_0820A8B4[]; -extern void *const gUnknown_0820A8DC[]; -extern void *const gUnknown_0820A904[]; +extern struct TileData *const gUnknown_0820A8B4[]; +extern struct TileData *const gUnknown_0820A8DC[]; +extern struct TileData *const gUnknown_0820A904[]; extern const u8 gUnknown_0820A81C[]; extern const u8 gUnknown_0820A864[]; extern const u8 gUnknown_0820A89C[]; @@ -94,6 +99,8 @@ static void sub_8045D58(u8, u8); static u8 sub_804602C(int, int, int, int *, u8 *, u8); static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, u16 *c); + + static int do_nothing(s16 unused1, s16 unused2, int unused3) { return 9; @@ -2368,7 +2375,7 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) u8 *ptr; s32 i; s32 _7; - u8 *const *r1; + struct TileData *const *r1; StringCopy(gDisplayedStringBattle, gUnknown_0820A8B0); GetMonData(pkmn, MON_DATA_NICKNAME, nickname); @@ -2448,29 +2455,34 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) if (GetBankSide(gSprites[a].data[6]) == 0 && !IsDoubleBattle()) { - r1 = (u8 *const *)gUnknown_0820A8B4; + r1 = gUnknown_0820A8B4; for (i = 0; i < _7; i++) { - u8 *r4 = r1[i]; + // u8 *r4 = (u8 *) r1[i]; + struct TileData *r4 = r1[i]; - r4 += gSprites[a].oam.tileNum * 32; + // r4 += gSprites[a].oam.tileNum * 32; + r4 += gSprites[a].oam.tileNum; CpuCopy32(ptr, r4, 32); + // CpuCopy32(ptr, &(r4->data[gSprites[a].oam.tileNum]), 32); ptr += 32; - r4 += 0x100; + // r4 += 0x100; + r4 += 8; CpuCopy32(ptr, r4, 32); + // CpuCopy32(ptr, &((r4+8)->data[gSprites[a].oam.tileNum]), 32); ptr += 32; } } else { if (GetBankSide(gSprites[a].data[6]) == 0) - r1 = (u8 *const *)gUnknown_0820A904; + r1 = gUnknown_0820A904; else - r1 = (u8 *const *)gUnknown_0820A8DC; + r1 = gUnknown_0820A8DC; for (i = 0; i < _7; i++) { - u8 *r4 = r1[i]; + u8 *r4 = (u8 *) r1[i]; r4 += gSprites[a].oam.tileNum * 32; CpuCopy32(ptr, r4, 32); -- cgit v1.2.3 From 8602ff770030d84d2d18cccd961c07f195dc0a17 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 15 Jan 2018 01:11:47 +0100 Subject: continue testing --- src/battle/battle_interface.c | 85 +++++++++++++++++++++++++------------------ 1 file changed, 50 insertions(+), 35 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 5bdbc2506..7d32ff0b1 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -29,10 +29,12 @@ struct UnknownStruct7 u8 filler0[0x180]; }; -struct TileData -{ - u32 data[8]; -}; +// struct TileData4bpp +// { +// u8 data[32]; +// }; + +typedef u8 TileData4bpp[32]; extern u8 gDisplayedStringBattle[]; extern u8 gNoOfAllBanks; @@ -62,11 +64,11 @@ extern void *const gUnknown_0820A83C[]; extern void *const gUnknown_0820A848[]; extern void *const gUnknown_0820A854[]; extern void *const gUnknown_0820A85C[]; -extern void *const gUnknown_0820A87C[]; -extern void *const gUnknown_0820A894[]; -extern struct TileData *const gUnknown_0820A8B4[]; -extern struct TileData *const gUnknown_0820A8DC[]; -extern struct TileData *const gUnknown_0820A904[]; +extern TileData4bpp *const gUnknown_0820A87C[]; +extern TileData4bpp *const gUnknown_0820A894[]; +extern TileData4bpp *const gUnknown_0820A8B4[]; +extern TileData4bpp *const gUnknown_0820A8DC[]; +extern TileData4bpp *const gUnknown_0820A904[]; extern const u8 gUnknown_0820A81C[]; extern const u8 gUnknown_0820A864[]; extern const u8 gUnknown_0820A89C[]; @@ -99,7 +101,19 @@ static void sub_8045D58(u8, u8); static u8 sub_804602C(int, int, int, int *, u8 *, u8); static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, u16 *c); - +// TileData4bpp *const gUnknown_0820A904[10] = +// { +// &OBJ_VRAM0_TEST[2], // 0x40 +// &OBJ_VRAM0_TEST[3], // 0x60 +// &OBJ_VRAM0_TEST[4], // 0x80 +// &OBJ_VRAM0_TEST[5], // 0xA0 +// &OBJ_VRAM0_TEST[6], // 0xC0 +// &OBJ_VRAM0_TEST[7], // 0xE0 +// &OBJ_VRAM0_TEST[32], // 0x400 +// &OBJ_VRAM0_TEST[33], // 0x420 +// &OBJ_VRAM0_TEST[34], // 0x440 +// &OBJ_VRAM0_TEST[35], // 0x460 +// }; static int do_nothing(s16 unused1, s16 unused2, int unused3) { @@ -916,7 +930,8 @@ static void sub_8044210(u8 a, s16 b, u8 c) { u8 str[0x14]; u8 *ptr; - void *const *r7; + // void *const *r7; + TileData4bpp *const *r7; int r10; int r4; int i; @@ -942,6 +957,7 @@ static void sub_8044210(u8 a, s16 b, u8 c) sub_8003504(ptr, b, 0xF, 1); if (GetBankSide(r4) == 0) { + // CpuCopy32(sub_8043CDC(0x74), OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x34) * 32, 32); CpuCopy32(sub_8043CDC(0x74), OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x34) * 32, 32); } } @@ -949,7 +965,8 @@ static void sub_8044210(u8 a, s16 b, u8 c) sub_80034D4(ewram0_9(0), str); for (i = 0; i < r10; i++) { - CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 0x20); + // CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 0x20); + CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum, 0x20); } } @@ -2375,7 +2392,8 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) u8 *ptr; s32 i; s32 _7; - struct TileData *const *r1; + TileData4bpp *const *r1; + TileData4bpp *tileDataSrc; StringCopy(gDisplayedStringBattle, gUnknown_0820A8B0); GetMonData(pkmn, MON_DATA_NICKNAME, nickname); @@ -2450,28 +2468,25 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) } } + tileDataSrc = (TileData4bpp *) ptr; + for (; i < _7; i++) - CpuCopy32(sub_8043CDC(0x2B), ptr + 64 * i, 32); + CpuCopy32(sub_8043CDC(0x2B), tileDataSrc + 2 * i, 32); if (GetBankSide(gSprites[a].data[6]) == 0 && !IsDoubleBattle()) { r1 = gUnknown_0820A8B4; for (i = 0; i < _7; i++) { - // u8 *r4 = (u8 *) r1[i]; - struct TileData *r4 = r1[i]; - - // r4 += gSprites[a].oam.tileNum * 32; - r4 += gSprites[a].oam.tileNum; - CpuCopy32(ptr, r4, 32); - // CpuCopy32(ptr, &(r4->data[gSprites[a].oam.tileNum]), 32); - ptr += 32; - - // r4 += 0x100; - r4 += 8; - CpuCopy32(ptr, r4, 32); - // CpuCopy32(ptr, &((r4+8)->data[gSprites[a].oam.tileNum]), 32); - ptr += 32; + TileData4bpp *tileDataDest = r1[i]; + + tileDataDest += gSprites[a].oam.tileNum; + CpuCopy32(tileDataSrc, tileDataDest, 32); + tileDataSrc++; + + tileDataDest += 8; + CpuCopy32(tileDataSrc, tileDataDest, 32); + tileDataSrc++; } } else @@ -2482,15 +2497,15 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) r1 = gUnknown_0820A8DC; for (i = 0; i < _7; i++) { - u8 *r4 = (u8 *) r1[i]; + TileData4bpp *tileDataDest = r1[i]; - r4 += gSprites[a].oam.tileNum * 32; - CpuCopy32(ptr, r4, 32); - ptr += 32; + tileDataDest += gSprites[a].oam.tileNum; + CpuCopy32(tileDataSrc, tileDataDest, 32); + tileDataSrc++; - r4 += 0x100; - CpuCopy32(ptr, r4, 32); - ptr += 32; + tileDataDest += 8; + CpuCopy32(tileDataSrc, tileDataDest, 32); + tileDataSrc++; } } } -- cgit v1.2.3 From d2e0d49392945e419c67b65c49942252e83dfabe Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 15 Jan 2018 02:25:01 +0100 Subject: done testing --- src/battle/battle_interface.c | 65 ++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 22 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 7d32ff0b1..6f6dc9de6 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -29,12 +29,47 @@ struct UnknownStruct7 u8 filler0[0x180]; }; -// struct TileData4bpp -// { -// u8 data[32]; -// }; +TileData4bpp *const gUnknown_0820A8B4[10] = +{ + &OBJ_VRAM0_TEMP[ 2], + &OBJ_VRAM0_TEMP[ 3], + &OBJ_VRAM0_TEMP[ 4], + &OBJ_VRAM0_TEMP[ 5], + &OBJ_VRAM0_TEMP[ 6], + &OBJ_VRAM0_TEMP[ 7], + &OBJ_VRAM0_TEMP[64], + &OBJ_VRAM0_TEMP[65], + &OBJ_VRAM0_TEMP[66], + &OBJ_VRAM0_TEMP[67], +}; + +TileData4bpp *const gUnknown_0820A8DC[10] = +{ + &OBJ_VRAM0_TEMP[ 1], + &OBJ_VRAM0_TEMP[ 2], + &OBJ_VRAM0_TEMP[ 3], + &OBJ_VRAM0_TEMP[ 4], + &OBJ_VRAM0_TEMP[ 5], + &OBJ_VRAM0_TEMP[ 6], + &OBJ_VRAM0_TEMP[ 7], + &OBJ_VRAM0_TEMP[32], + &OBJ_VRAM0_TEMP[33], + &OBJ_VRAM0_TEMP[34], +}; -typedef u8 TileData4bpp[32]; +TileData4bpp *const gUnknown_0820A904[10] = +{ + &OBJ_VRAM0_TEMP[ 2], + &OBJ_VRAM0_TEMP[ 3], + &OBJ_VRAM0_TEMP[ 4], + &OBJ_VRAM0_TEMP[ 5], + &OBJ_VRAM0_TEMP[ 6], + &OBJ_VRAM0_TEMP[ 7], + &OBJ_VRAM0_TEMP[32], + &OBJ_VRAM0_TEMP[33], + &OBJ_VRAM0_TEMP[34], + &OBJ_VRAM0_TEMP[35], +}; extern u8 gDisplayedStringBattle[]; extern u8 gNoOfAllBanks; @@ -66,9 +101,9 @@ extern void *const gUnknown_0820A854[]; extern void *const gUnknown_0820A85C[]; extern TileData4bpp *const gUnknown_0820A87C[]; extern TileData4bpp *const gUnknown_0820A894[]; -extern TileData4bpp *const gUnknown_0820A8B4[]; -extern TileData4bpp *const gUnknown_0820A8DC[]; -extern TileData4bpp *const gUnknown_0820A904[]; +// extern TileData4bpp *const gUnknown_0820A8B4[]; +// extern TileData4bpp *const gUnknown_0820A8DC[]; +// extern TileData4bpp *const gUnknown_0820A904[]; extern const u8 gUnknown_0820A81C[]; extern const u8 gUnknown_0820A864[]; extern const u8 gUnknown_0820A89C[]; @@ -101,20 +136,6 @@ static void sub_8045D58(u8, u8); static u8 sub_804602C(int, int, int, int *, u8 *, u8); static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, u16 *c); -// TileData4bpp *const gUnknown_0820A904[10] = -// { -// &OBJ_VRAM0_TEST[2], // 0x40 -// &OBJ_VRAM0_TEST[3], // 0x60 -// &OBJ_VRAM0_TEST[4], // 0x80 -// &OBJ_VRAM0_TEST[5], // 0xA0 -// &OBJ_VRAM0_TEST[6], // 0xC0 -// &OBJ_VRAM0_TEST[7], // 0xE0 -// &OBJ_VRAM0_TEST[32], // 0x400 -// &OBJ_VRAM0_TEST[33], // 0x420 -// &OBJ_VRAM0_TEST[34], // 0x440 -// &OBJ_VRAM0_TEST[35], // 0x460 -// }; - static int do_nothing(s16 unused1, s16 unused2, int unused3) { return 9; -- cgit v1.2.3 From 18b5a882f21e06e1cdfd0ba51c04784706ed1ba4 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 15 Jan 2018 22:44:50 +0100 Subject: Done data for battle_interface.c, doing OBJ_VRAM0 stuff later --- src/battle/battle_interface.c | 406 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 366 insertions(+), 40 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 6f6dc9de6..2b47d358a 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -29,6 +29,360 @@ struct UnknownStruct7 u8 filler0[0x180]; }; +void sub_8043CEC(struct Sprite *sprite); +extern const u8 gBattleGfx_BallStatusBar[]; +extern const u8 gUnknown_08D1212C[]; +extern const u8 gUnknown_08D1214C[]; +extern const u8 Tiles_D129AC[]; +static void sub_8045030(struct Sprite *sprite); +static void sub_804507C(struct Sprite *sprite); + +const struct OamData gOamData_820A4E4 = +{ + .shape = 1, + .size = 3, + .priority = 1, +}; + +const struct SpriteTemplate gSpriteTemplates_820A4EC[] = +{ + { + .tileTag = 55039, + .paletteTag = 55039, + .oam = &gOamData_820A4E4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55040, + .paletteTag = 55039, + .oam = &gOamData_820A4E4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, +}; + +const struct SpriteTemplate gSpriteTemplates_820A51C[] = +{ + { + .tileTag = 55041, + .paletteTag = 55039, + .oam = &gOamData_820A4E4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, + { + .tileTag = 55042, + .paletteTag = 55039, + .oam = &gOamData_820A4E4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, + }, +}; + +const struct SpriteTemplate gSpriteTemplate_820A54C = +{ + .tileTag = 55051, + .paletteTag = 55039, + .oam = &gOamData_820A4E4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = SpriteCallbackDummy, +}; + +const struct OamData gOamData_820A564 = +{ + .shape = 1, + .size = 1, + .priority = 1, +}; + +const struct SpriteTemplate gSpriteTemplates_820A56C[] = +{ + { + .tileTag = 55044, + .paletteTag = 55044, + .oam = &gOamData_820A564, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8043CEC, + }, + { + .tileTag = 55045, + .paletteTag = 55044, + .oam = &gOamData_820A564, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8043CEC, + }, + { + .tileTag = 55046, + .paletteTag = 55044, + .oam = &gOamData_820A564, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8043CEC, + }, + { + .tileTag = 55047, + .paletteTag = 55044, + .oam = &gOamData_820A564, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8043CEC, + }, +}; + +const struct Subsprite gSubspriteTable_820A5CC[] = +{ + { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32 + { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32 + { .x = -16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 48, .size = 1 }, // size := 32x8 + { .x = 16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 52, .size = 1 }, // size := 32x8 + { .x = 48, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 56, .size = 1 }, // size := 32x8 +}; + +const struct Subsprite gSubspriteTable_820A5F4[] = +{ + { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 64, .size = 3 }, // size := 64x32 + { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 96, .size = 2 }, // size := 32x32 + { .x = -16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =112, .size = 1 }, // size := 32x8 + { .x = 16, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =116, .size = 1 }, // size := 32x8 + { .x = 48, .y = 32, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset =120, .size = 1 }, // size := 32x8 +}; + +const struct Subsprite gSubspriteTable_820A61C[] = +{ + { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32 + { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32 +}; + +const struct Subsprite gSubspriteTable_820A62C[] = +{ + { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 3 }, // size := 64x32 + { .x = 48, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 32, .size = 2 }, // size := 32x32 +}; + +const struct Subsprite gSubspriteTable_820A63C[] = +{ + { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8 + { .x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8 +}; + +const struct Subsprite gSubspriteTable_820A64C[] = +{ + { .x = -16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8 + { .x = 16, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8 + { .x = -32, .y = 0, .shape = ST_OAM_SQUARE, .priority = 1, .tileOffset = 8, .size = 0 }, // size := 8x8 +}; + +const struct SubspriteTable gSubspriteTables_unreferenced[] = +{ + { ARRAY_COUNT(gSubspriteTable_820A5CC), gSubspriteTable_820A5CC }, + { ARRAY_COUNT(gSubspriteTable_820A61C), gSubspriteTable_820A61C }, + { ARRAY_COUNT(gSubspriteTable_820A5F4), gSubspriteTable_820A5F4 }, + { ARRAY_COUNT(gSubspriteTable_820A62C), gSubspriteTable_820A62C }, +}; + +const struct SubspriteTable gSubspriteTables_820A684[] = +{ + { ARRAY_COUNT(gSubspriteTable_820A63C), gSubspriteTable_820A63C }, + { ARRAY_COUNT(gSubspriteTable_820A64C), gSubspriteTable_820A64C }, +}; + +const struct Subsprite gSubspriteTable_820A694[] = +{ + { .x = -96, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8 + { .x = -64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8 + { .x = -32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8 + { .x = 0, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 12, .size = 1 }, // size := 32x8 +}; + +const struct Subsprite gSubspriteTable_820A6B4[] = +{ + { .x = -96, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 0, .size = 1 }, // size := 32x8 + { .x = -64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 4, .size = 1 }, // size := 32x8 + { .x = -32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8 + { .x = 0, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8 + { .x = 32, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 8, .size = 1 }, // size := 32x8 + { .x = 64, .y = 0, .shape = ST_OAM_H_RECTANGLE, .priority = 1, .tileOffset = 12, .size = 1 }, // size := 32x8 +}; + +const struct SubspriteTable gSubspriteTables_820A6E4[] = +{ + { ARRAY_COUNT(gSubspriteTable_820A694), gSubspriteTable_820A694 }, +}; + +const struct SubspriteTable gSubspriteTables_820A6EC[] = +{ + { ARRAY_COUNT(gSubspriteTable_820A6B4), gSubspriteTable_820A6B4 }, +}; + +// unused dakuten/handakuten tiles +const u8 gUnusedDakuten[] = INCBIN_U8("graphics/unused/dakuten.4bpp"); + +const struct CompressedSpriteSheet gUnknown_0820A754[] = +{ + { gBattleGfx_BallStatusBar, 512, 0xd70c }, + { gBattleGfx_BallStatusBar, 512, 0xd70d }, +}; + +const struct CompressedSpritePalette gUnknown_0820A764[] = +{ + { gUnknown_08D1212C, 0xd710 }, + { gUnknown_08D1212C, 0xd711 }, +}; + +const struct CompressedSpritePalette gUnknown_0820A774[] = +{ + { gUnknown_08D1214C, 0xd712 }, + { gUnknown_08D1214C, 0xd713 }, +}; + +const struct CompressedSpriteSheet gUnknown_0820A784[] = +{ + { Tiles_D129AC, 0x80, 0xd714 }, + { Tiles_D129AC, 0x80, 0xd715 }, +}; + +const struct OamData gOamData_820A794 = +{ + .shape = 1, + .size = 3, + .priority = 1, +}; + +const struct OamData gOamData_820A79C = +{ + .shape = 0, + .size = 0, + .priority = 1, +}; + +const struct SpriteTemplate gSpriteTemplate_820A7A4 = +{ + .tileTag = 55052, + .paletteTag = 55056, + .oam = &gOamData_820A4E4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8045030, +}; + +const struct SpriteTemplate gSpriteTemplate_820A7BC = +{ + .tileTag = 55053, + .paletteTag = 55057, + .oam = &gOamData_820A4E4, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8045030, +}; + +const struct SpriteTemplate gSpriteTemplate_820A7D4 = +{ + .tileTag = 55060, + .paletteTag = 55058, + .oam = &gOamData_820A79C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_804507C, +}; + +const struct SpriteTemplate gSpriteTemplate_820A7EC = +{ + .tileTag = 55061, + .paletteTag = 55059, + .oam = &gOamData_820A79C, + .anims = gDummySpriteAnimTable, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_804507C, +}; + +TileData4bpp *const gUnknown_0820A804[2] = +{ + &OBJ_VRAM0_TEMP[74], + &OBJ_VRAM0_TEMP[75], +}; + +TileData4bpp *const gUnknown_0820A80C[2] = +{ + &OBJ_VRAM0_TEMP[41], + &OBJ_VRAM0_TEMP[42], +}; + +TileData4bpp *const gUnknown_0820A814[2] = +{ + &OBJ_VRAM0_TEMP[42], + &OBJ_VRAM0_TEMP[43], +}; + +const u8 gUnknown_0820A81C[] = __("{COLOR DARK_GREY}{HIGHLIGHT RED} "); + +TileData4bpp *const gUnknown_0820A83C[3] = +{ + &OBJ_VRAM0_TEMP[31], + &OBJ_VRAM0_TEMP[88], + &OBJ_VRAM0_TEMP[89], +}; + +TileData4bpp *const gUnknown_0820A848[3] = +{ + &OBJ_VRAM0_TEMP[22], + &OBJ_VRAM0_TEMP[23], + &OBJ_VRAM0_TEMP[48], +}; + +TileData4bpp *const gUnknown_0820A854[2] = +{ + &OBJ_VRAM0_TEMP[90], + &OBJ_VRAM0_TEMP[91], +}; + +TileData4bpp *const gUnknown_0820A85C[2] = +{ + &OBJ_VRAM0_TEMP[49], + &OBJ_VRAM0_TEMP[50], +}; + +const u8 gUnknown_0820A864[] = _("{COLOR DARK_GREY}{HIGHLIGHT RED} /"); + +TileData4bpp *const gUnknown_0820A87C[6] = +{ + &OBJ_VRAM0_TEMP[0], + &OBJ_VRAM0_TEMP[1], + &OBJ_VRAM0_TEMP[2], + &OBJ_VRAM0_TEMP[3], + &OBJ_VRAM0_TEMP[4], + &OBJ_VRAM0_TEMP[5], +}; + +TileData4bpp *const gUnknown_0820A894[2] = +{ + &OBJ_VRAM0_TEMP[6], + &OBJ_VRAM0_TEMP[7], +}; + +const u8 gUnknown_0820A89C[] = __("{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT} "); +const u8 gUnknown_0820A8B0[] = _("{HIGHLIGHT RED}"); + TileData4bpp *const gUnknown_0820A8B4[10] = { &OBJ_VRAM0_TEMP[ 2], @@ -79,35 +433,6 @@ extern u8 gHealthboxIDs[]; extern u16 gBattleTypeFlags; -extern const struct SpriteTemplate gSpriteTemplate_820A4EC[]; -extern const struct SpriteTemplate gSpriteTemplate_820A51C[]; -extern const struct SpriteTemplate gSpriteTemplate_820A54C; -extern const struct SpriteTemplate gSpriteTemplate_820A56C[]; -extern const struct SubspriteTable gSubspriteTables_820A684[]; -extern const struct SubspriteTable gSubspriteTables_820A6E4[]; -extern const struct SubspriteTable gSubspriteTables_820A6EC[]; -extern const struct SpriteSheet gUnknown_0820A754[]; -extern const struct SpritePalette gUnknown_0820A764[]; -extern const struct SpritePalette gUnknown_0820A774[]; -extern const struct SpriteSheet gUnknown_0820A784[]; -extern const struct SpriteTemplate gSpriteTemplate_820A7A4[]; -extern const struct SpriteTemplate gSpriteTemplate_820A7D4[]; -extern void *const gUnknown_0820A804[]; -extern void *const gUnknown_0820A80C[]; -extern void *const gUnknown_0820A814[]; -extern void *const gUnknown_0820A83C[]; -extern void *const gUnknown_0820A848[]; -extern void *const gUnknown_0820A854[]; -extern void *const gUnknown_0820A85C[]; -extern TileData4bpp *const gUnknown_0820A87C[]; -extern TileData4bpp *const gUnknown_0820A894[]; -// extern TileData4bpp *const gUnknown_0820A8B4[]; -// extern TileData4bpp *const gUnknown_0820A8DC[]; -// extern TileData4bpp *const gUnknown_0820A904[]; -extern const u8 gUnknown_0820A81C[]; -extern const u8 gUnknown_0820A864[]; -extern const u8 gUnknown_0820A89C[]; -extern const u8 gUnknown_0820A8B0[]; extern const u8 BattleText_SafariBalls[]; extern const u8 BattleText_SafariBallsLeft[]; extern const u8 BattleText_HighlightRed[]; @@ -463,8 +788,8 @@ u8 battle_make_oam_normal_battle(u8 a) { if (GetBankSide(a) == 0) { - spriteId1 = CreateSprite(&gSpriteTemplate_820A4EC[0], 240, 160, 1); - spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A4EC[0], 240, 160, 1); + spriteId1 = CreateSprite(&gSpriteTemplates_820A4EC[0], 240, 160, 1); + spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A4EC[0], 240, 160, 1); gSprites[spriteId1].oam.shape = 0; gSprites[spriteId2].oam.shape = 0; @@ -472,8 +797,8 @@ u8 battle_make_oam_normal_battle(u8 a) } else { - spriteId1 = CreateSprite(&gSpriteTemplate_820A51C[0], 240, 160, 1); - spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A51C[0], 240, 160, 1); + spriteId1 = CreateSprite(&gSpriteTemplates_820A51C[0], 240, 160, 1); + spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A51C[0], 240, 160, 1); gSprites[spriteId2].oam.tileNum += 32; sp0 = 2; @@ -489,8 +814,8 @@ u8 battle_make_oam_normal_battle(u8 a) { if (GetBankSide(a) == 0) { - spriteId1 = CreateSprite(&gSpriteTemplate_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1); - spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1); + spriteId1 = CreateSprite(&gSpriteTemplates_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1); + spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A4EC[GetBankIdentity(a) / 2], 240, 160, 1); gSprites[spriteId1].oam.affineParam = spriteId2; gSprites[spriteId2].data[5] = spriteId1; @@ -501,8 +826,8 @@ u8 battle_make_oam_normal_battle(u8 a) //_08043ACC else { - spriteId1 = CreateSprite(&gSpriteTemplate_820A51C[GetBankIdentity(a) / 2], 240, 160, 1); - spriteId2 = CreateSpriteAtEnd(&gSpriteTemplate_820A51C[GetBankIdentity(a) / 2], 240, 160, 1); + spriteId1 = CreateSprite(&gSpriteTemplates_820A51C[GetBankIdentity(a) / 2], 240, 160, 1); + spriteId2 = CreateSpriteAtEnd(&gSpriteTemplates_820A51C[GetBankIdentity(a) / 2], 240, 160, 1); gSprites[spriteId1].oam.affineParam = spriteId2; gSprites[spriteId2].data[5] = spriteId1; @@ -514,7 +839,7 @@ u8 battle_make_oam_normal_battle(u8 a) } //_08043B50 - spriteId3 = CreateSpriteAtEnd(&gSpriteTemplate_820A56C[gBanksBySide[a]], 140, 60, 0); + spriteId3 = CreateSpriteAtEnd(&gSpriteTemplates_820A56C[gBanksBySide[a]], 140, 60, 0); sprite = &gSprites[spriteId3]; SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBankSide(a)]); sprite->subspriteMode = 2; @@ -696,7 +1021,8 @@ void sub_8043F44(u8 a) static void sub_8043FC0(u8 a, u8 b) { u8 str[30]; - void *const *r7; + // void *const *r7; + TileData4bpp *const *r7; u8 *ptr; s32 i; s32 two; @@ -746,7 +1072,7 @@ static void sub_8043FC0(u8 a, u8 b) two = 2; for (i = 0; i < two; i++) - CpuCopy32((void *)(ewram0_9(1) + i * 64), r7[i] + gSprites[a].oam.tileNum * 32, 32); + CpuCopy32((void *)(ewram0_9(1) + i * 64), r7[i] + gSprites[a].oam.tileNum, 32); } #ifdef NONMATCHING -- cgit v1.2.3 From 8dda2620e78d2c84b36246aa30146694d929392f Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 15 Jan 2018 22:58:06 +0100 Subject: A bit of cleanup --- src/battle/battle_interface.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 2b47d358a..0fca01c00 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -14,6 +14,7 @@ #include "task.h" #include "text.h" #include "ewram.h" +#include "graphics.h" struct UnknownStruct5 { @@ -29,11 +30,7 @@ struct UnknownStruct7 u8 filler0[0x180]; }; -void sub_8043CEC(struct Sprite *sprite); -extern const u8 gBattleGfx_BallStatusBar[]; -extern const u8 gUnknown_08D1212C[]; -extern const u8 gUnknown_08D1214C[]; -extern const u8 Tiles_D129AC[]; +static void sub_8043CEC(struct Sprite *sprite); static void sub_8045030(struct Sprite *sprite); static void sub_804507C(struct Sprite *sprite); @@ -876,7 +873,7 @@ static const void *sub_8043CDC(u8 a) return gUnknown_08D1216C[a]; } -void sub_8043CEC(struct Sprite *sprite) +static void sub_8043CEC(struct Sprite *sprite) { u8 r5 = sprite->data[5]; @@ -2640,7 +2637,7 @@ static void sub_8044F70(u8 taskId) } } -void sub_8045030(struct Sprite *sprite) +static void sub_8045030(struct Sprite *sprite) { if (sprite->pos2.x != 0) sprite->pos2.x += sprite->data[0]; @@ -2656,7 +2653,7 @@ static void sub_8045048(struct Sprite *sprite) sprite->data[1] &= 0xF; } -void sub_804507C(struct Sprite *sprite) +static void sub_804507C(struct Sprite *sprite) { u8 r3; u16 r2; -- cgit v1.2.3 From af35c8e429c09197eb46346696792ad89bf0c7d3 Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Mon, 15 Jan 2018 23:22:16 +0100 Subject: Done decompiling battle_interfaces.s --- src/battle/battle_interface.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 0fca01c00..a24c0427c 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -237,13 +237,13 @@ const struct CompressedSpriteSheet gUnknown_0820A754[] = { gBattleGfx_BallStatusBar, 512, 0xd70d }, }; -const struct CompressedSpritePalette gUnknown_0820A764[] = +const struct SpritePalette gUnknown_0820A764[] = { { gUnknown_08D1212C, 0xd710 }, { gUnknown_08D1212C, 0xd711 }, }; -const struct CompressedSpritePalette gUnknown_0820A774[] = +const struct SpritePalette gUnknown_0820A774[] = { { gUnknown_08D1214C, 0xd712 }, { gUnknown_08D1214C, 0xd713 }, -- cgit v1.2.3 From 35f04db27cd4d5689c6498ba80eaeb695f973ebc Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Tue, 16 Jan 2018 02:24:40 +0100 Subject: Continuing testing with OBJ_VRAM0, all replaced with OBJ_VRAM0_TEMP now --- src/battle/battle_interface.c | 69 ++++++++++++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 21 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index a24c0427c..12d7f48b2 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -434,6 +434,7 @@ extern const u8 BattleText_SafariBalls[]; extern const u8 BattleText_SafariBallsLeft[]; extern const u8 BattleText_HighlightRed[]; extern const u8 gUnknown_08D1216C[][32]; +// extern const TileData4bpp gUnknown_08D1216C[]; // graphics extern const u16 gBattleInterfaceStatusIcons_DynPal[]; @@ -443,6 +444,7 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[]; static void sub_8043D5C(struct Sprite *); static const void *sub_8043CDC(u8); +// static const TileData4bpp *sub_8043CDC(u8); static void sub_8044210(u8, s16, u8); static void draw_status_ailment_maybe(u8); extern void sub_8045180(struct Sprite *); @@ -841,7 +843,8 @@ u8 battle_make_oam_normal_battle(u8 a) SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBankSide(a)]); sprite->subspriteMode = 2; sprite->oam.priority = 1; - CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + sprite->oam.tileNum * 32, 64); + // CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + sprite->oam.tileNum * 32, 64); + CpuCopy32(sub_8043CDC(1), &OBJ_VRAM0_TEMP[sprite->oam.tileNum], 64); gSprites[spriteId1].data[5] = spriteId3; gSprites[spriteId1].data[6] = a; @@ -869,8 +872,10 @@ u8 battle_make_oam_safari_battle(void) } static const void *sub_8043CDC(u8 a) +// static const TileData4bpp *sub_8043CDC(u8 a) { return gUnknown_08D1216C[a]; + // return &gUnknown_08D1216C[a]; } static void sub_8043CEC(struct Sprite *sprite) @@ -1301,16 +1306,17 @@ static void sub_8044210(u8 a, s16 b, u8 c) sub_8003504(ptr, b, 0xF, 1); if (GetBankSide(r4) == 0) { + int r2 = 52; // CpuCopy32(sub_8043CDC(0x74), OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x34) * 32, 32); - CpuCopy32(sub_8043CDC(0x74), OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x34) * 32, 32); + CpuCopy32(sub_8043CDC(0x74), &OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + r2], 32); } } r4 = gSprites[a].data[5]; sub_80034D4(ewram0_9(0), str); for (i = 0; i < r10; i++) { - // CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 0x20); - CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum, 0x20); + // CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 32); + CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum, 32); } } @@ -1672,15 +1678,19 @@ void sub_804454C(void) { spriteId = gSprites[gHealthboxIDs[i]].data[5]; - CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); + // CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); + CpuFill32(0, &OBJ_VRAM0_TEMP[gSprites[spriteId].oam.tileNum], 256); sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), 0); sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); } else { + int temp; draw_status_ailment_maybe(gHealthboxIDs[i]); sub_8045A5C(gHealthboxIDs[i], &gPlayerParty[gBattlePartyID[i]], 5); - CpuCopy32(sub_8043CDC(0x75), OBJ_VRAM0 + 0x680 + gSprites[gHealthboxIDs[i]].oam.tileNum * 32, 32); + temp = 52; + // CpuCopy32(sub_8043CDC(0x75), OBJ_VRAM0 + 0x680 + gSprites[gHealthboxIDs[i]].oam.tileNum * 32, 32); + CpuCopy32(sub_8043CDC(0x75), &OBJ_VRAM0_TEMP[gSprites[gHealthboxIDs[i]].oam.tileNum + temp], 32); } } else @@ -1695,7 +1705,8 @@ void sub_804454C(void) { spriteId = gSprites[gHealthboxIDs[i]].data[5]; - CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); + // CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); + CpuFill32(0, &OBJ_VRAM0_TEMP[gSprites[spriteId].oam.tileNum], 256); sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), 0); sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); } @@ -2869,11 +2880,14 @@ static void sub_8045458(u8 a, u8 b) u16 species = GetMonData(&gEnemyParty[gBattlePartyID[r4]], MON_DATA_SPECIES); if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) { + int temp = 8; r4 = gSprites[a].data[5]; if (b != 0) - CpuCopy32(sub_8043CDC(0x46), OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); + // CpuCopy32(sub_8043CDC(0x46), OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); + CpuCopy32(sub_8043CDC(0x46), &OBJ_VRAM0_TEMP[gSprites[r4].oam.tileNum + temp], 32); else - CpuFill32(0, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); + // CpuFill32(0, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); + CpuFill32(0, &OBJ_VRAM0_TEMP[gSprites[r4].oam.tileNum + temp], 32); } } } @@ -2934,10 +2948,12 @@ static void draw_status_ailment_maybe(u8 a) r6 = sub_8043CDC(0x27); for (i = 0; i < 3; i++) - CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8 + i) * 32, 32); + // CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8 + i) * 32, 32); + CpuCopy32(r6, &OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + r8 + i], 32); if (!ewram17800[r7].unk0_4) - CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 64); + // CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 64); + CpuCopy32(sub_8043CDC(1), &OBJ_VRAM0_TEMP[gSprites[r10].oam.tileNum], 64); sub_8045458(a, 1); return; @@ -2948,13 +2964,17 @@ static void draw_status_ailment_maybe(u8 a) // I don't like writing the array index like this, but I can't get it to match otherwise. FillPalette(r0[gBattleInterfaceStatusIcons_DynPal], r4_2 + 0x100, 2); CpuCopy16(gPlttBufferUnfaded + 0x100 + r4_2, (void *)(OBJ_PLTT + r4_2 * 2), 2); - CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8) * 32, 96); + // CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8) * 32, 96); + CpuCopy32(r6, OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + r8], 96); if (IsDoubleBattle() == TRUE || GetBankSide(r7) == TRUE) { if (!ewram17800[r7].unk0_4) { - CpuCopy32(sub_8043CDC(0), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 32); - CpuCopy32(sub_8043CDC(0x41), OBJ_VRAM0 + (gSprites[r10].oam.tileNum + 1) * 32, 32); + // CpuCopy32(sub_8043CDC(0), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 32); + // CpuCopy32(sub_8043CDC(0x41), OBJ_VRAM0 + (gSprites[r10].oam.tileNum + 1) * 32, 32); + int temp = 1; + CpuCopy32(sub_8043CDC(0), OBJ_VRAM0_TEMP[gSprites[r10].oam.tileNum], 32); + CpuCopy32(sub_8043CDC(0x41), OBJ_VRAM0_TEMP[gSprites[r10].oam.tileNum + temp], 32); } } sub_8045458(a, 0); @@ -3035,11 +3055,13 @@ static void sub_80458B0(u8 a) CpuCopy32(sub_8043CDC(0x2B), r6 + i * 64, 32); for (r7 = 3; r7 < 3 + r8; r7++) { - addr = OBJ_VRAM0 + (gSprites[a].oam.tileNum + MACRO1(r7)) * 32; + // addr = OBJ_VRAM0 + (gSprites[a].oam.tileNum + MACRO1(r7)) * 32; + addr = OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + MACRO1(r7)]; CpuCopy32(r6, addr, 32); r6 += 32; - addr = OBJ_VRAM0 + (8 + gSprites[a].oam.tileNum + MACRO1(r7)) * 32; + // addr = OBJ_VRAM0 + (8 + gSprites[a].oam.tileNum + MACRO1(r7)) * 32; + addr = OBJ_VRAM0_TEMP[8 + gSprites[a].oam.tileNum + MACRO1(r7)]; CpuCopy32(r6, addr, 32); r6 += 32; } @@ -3063,7 +3085,8 @@ static void sub_8045998(u8 a) r7 = ewram520_2 + status * 0x180 + 32; for (i = 6; i < 6 + r6; i++) { - CpuCopy32(r7, OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x18 + MACRO1(i)) * 32, 32); + // CpuCopy32(r7, OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x18 + MACRO1(i)) * 32, 32); + CpuCopy32(r7, OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + 24 + MACRO1(i)], 32); r7 += 64; } } @@ -3187,9 +3210,11 @@ static void sub_8045D58(u8 a, u8 b) { u8 r4 = gSprites[ewram17850[a].unk0].data[5]; if (i < 2) - CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 2 + i) * 32, 32); + // CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 2 + i) * 32, 32); + CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0_TEMP[gSprites[r4].oam.tileNum + 2 + i], 32); else - CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + 64 + (i + gSprites[r4].oam.tileNum) * 32, 32); + // CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + 64 + (i + gSprites[r4].oam.tileNum) * 32, 32); + CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0_TEMP[i + gSprites[r4].oam.tileNum + 2], 32); } break; case 1: @@ -3203,9 +3228,11 @@ static void sub_8045D58(u8 a, u8 b) for (i = 0; i < 8; i++) { if (i < 4) - CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[ewram17850[a].unk0].oam.tileNum + 0x24 + i) * 32, 32); + // CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[ewram17850[a].unk0].oam.tileNum + 0x24 + i) * 32, 32); + CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0_TEMP[gSprites[ewram17850[a].unk0].oam.tileNum + 36 + i], 32); else - CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + 0xB80 + (i + gSprites[ewram17850[a].unk0].oam.tileNum) * 32, 32); + // CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + 0xB80 + (i + gSprites[ewram17850[a].unk0].oam.tileNum) * 32, 32); + CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0_TEMP[i + gSprites[ewram17850[a].unk0].oam.tileNum + 92], 32); } break; } -- cgit v1.2.3 From 91cfb6a564f73f02eb57792f8a0f4aa82e1867d1 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Tue, 16 Jan 2018 22:25:35 -0600 Subject: add debug ifdefs --- src/battle/battle_interface.c | 669 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 661 insertions(+), 8 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 97568d254..f7734301c 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -79,8 +79,8 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[]; static void sub_8043D5C(struct Sprite *); static const void *sub_8043CDC(u8); -static void sub_8044210(u8, s16, u8); -static void draw_status_ailment_maybe(u8); +/*static*/ void sub_8044210(u8, s16, u8); +/*static*/ void draw_status_ailment_maybe(u8); extern void sub_8045180(struct Sprite *); static void sub_8045110(struct Sprite *); static void sub_8045048(struct Sprite *); @@ -651,7 +651,7 @@ void sub_8043F44(u8 a) #define CHAR_LV_SEPARATOR CHAR_PERIOD #endif -static void sub_8043FC0(u8 a, u8 b) +/*static*/ void sub_8043FC0(u8 a, u8 b) { u8 str[30]; void *const *r7; @@ -905,7 +905,7 @@ _0804420C: .4byte 0x04000008\n\ } #endif -static void sub_8044210(u8 a, s16 b, u8 c) +/*static*/ void sub_8044210(u8 a, s16 b, u8 c) { u8 str[0x14]; u8 *ptr; @@ -1277,6 +1277,353 @@ _08044548: .4byte 0x04000008\n\ } #endif +#if DEBUG +__attribute__((naked)) +void sub_804454C() +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffffc\n" + " mov r0, #0x0\n" + " mov r8, r0\n" + " ldr r0, ._150\n" + " ldrb r0, [r0]\n" + " cmp r8, r0\n" + " blt ._133 @cond_branch\n" + " b ._164\n" + "._133:\n" + " ldr r1, ._150 + 4\n" + " mov r9, r1\n" + " mov r2, #0x64\n" + " mov sl, r2\n" + " ldr r7, ._150 + 8\n" + "._165:\n" + " ldr r0, ._150 + 12\n" + " mov r6, r8\n" + " add r5, r6, r0\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " mov r1, r9\n" + " add r1, r1, #0x1c\n" + " add r0, r0, r1\n" + " ldr r1, [r0]\n" + " ldr r0, ._150 + 16\n" + " cmp r1, r0\n" + " beq ._135 @cond_branch\n" + " b ._147\n" + "._135:\n" + " ldr r0, ._150 + 20\n" + " ldrb r0, [r0]\n" + " lsl r4, r6, #0x18\n" + " cmp r0, #0\n" + " bne ._138 @cond_branch\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bne ._138 @cond_branch\n" + " b ._147\n" + "._138:\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._141 @cond_branch\n" + " b ._147\n" + "._141:\n" + " mov r0, r8\n" + " lsl r3, r0, #0x2\n" + " ldr r0, ._150 + 24\n" + " add r3, r3, r0\n" + " ldr r0, [r3]\n" + " lsl r0, r0, #0x1b\n" + " lsr r0, r0, #0x1f\n" + " mov r2, #0x1\n" + " eor r2, r2, r0\n" + " lsl r2, r2, #0x4\n" + " ldrb r0, [r3]\n" + " mov r6, #0x11\n" + " neg r6, r6\n" + " add r1, r6, #0\n" + " and r0, r0, r1\n" + " orr r0, r0, r2\n" + " strb r0, [r3]\n" + " ldr r0, [r3]\n" + " lsl r0, r0, #0x1b\n" + " lsr r6, r0, #0x1f\n" + " lsr r0, r4, #0x18\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._143 @cond_branch\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " bne ._144 @cond_branch\n" + " b ._147\n" + "._144:\n" + " ldr r0, ._150 + 28\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._146 @cond_branch\n" + " b ._147\n" + "._146:\n" + " cmp r6, #0x1\n" + " bne ._148 @cond_branch\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r0, [r0, #0x38]\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " str r2, [sp]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r0, ._150 + 32\n" + " add r1, r1, r0\n" + " mov r0, sp\n" + " ldr r2, ._150 + 36\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r1, sl\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r2, ._150 + 40\n" + " add r0, r0, r2\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " bl sub_8044210\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r0\n" + " add r0, r6, #0\n" + " ldr r1, ._150 + 40\n" + " b ._149\n" + "._151:\n" + " .align 2, 0\n" + "._150:\n" + " .word gNoOfAllBanks\n" + " .word gSprites\n" + " .word gBattlePartyID\n" + " .word gHealthboxIDs\n" + " .word SpriteCallbackDummy+1\n" + " .word gUnknown_020297ED\n" + " .word +0x2017800\n" + " .word gBattleTypeFlags\n" + " .word 0x6010000\n" + " .word 0x5000040\n" + " .word gPlayerParty\n" + "._148:\n" + " ldrb r0, [r5]\n" + " bl draw_status_ailment_maybe\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r2, sl\n" + " mul r2, r2, r1\n" + " add r1, r2, #0\n" + " ldr r6, ._153\n" + " add r1, r1, r6\n" + " mov r2, #0x5\n" + " bl sub_8045A5C\n" + " mov r0, #0x75\n" + " bl sub_8043CDC\n" + " ldrb r2, [r5]\n" + " lsl r1, r2, #0x4\n" + " add r1, r1, r2\n" + " lsl r1, r1, #0x2\n" + " add r1, r1, r9\n" + " ldrh r1, [r1, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r2, ._153 + 4\n" + " add r1, r1, r2\n" + " ldr r2, ._153 + 8\n" + " bl gScriptFuncs_End+0x3cb4\n" + " b ._163\n" + "._154:\n" + " .align 2, 0\n" + "._153:\n" + " .word gPlayerParty\n" + " .word 0x6010680\n" + " .word 0x4000008\n" + "._143:\n" + " cmp r6, #0x1\n" + " bne ._155 @cond_branch\n" + " ldr r0, ._158\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " lsl r0, r0, #0x10\n" + " lsr r2, r0, #0x10\n" + " cmp r2, #0\n" + " beq ._156 @cond_branch\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r1\n" + " add r1, r6, #0\n" + " ldr r2, ._158 + 4\n" + " add r1, r1, r2\n" + " bl sub_8044338\n" + " b ._163\n" + "._159:\n" + " .align 2, 0\n" + "._158:\n" + " .word gBattleTypeFlags\n" + " .word gEnemyParty\n" + "._156:\n" + " ldrb r1, [r5]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r0, [r0, #0x38]\n" + " lsl r0, r0, #0x18\n" + " lsr r1, r0, #0x18\n" + " str r2, [sp]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x4]\n" + " lsl r1, r1, #0x16\n" + " lsr r1, r1, #0x11\n" + " ldr r6, ._161\n" + " add r1, r1, r6\n" + " mov r0, sp\n" + " ldr r2, ._161 + 4\n" + " bl gScriptFuncs_End+0x3cb4\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r1, sl\n" + " mul r1, r1, r0\n" + " add r0, r1, #0\n" + " ldr r2, ._161 + 8\n" + " add r0, r0, r2\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x0\n" + " bl sub_8044210\n" + " ldrb r4, [r5]\n" + " ldrh r0, [r7]\n" + " mov r6, sl\n" + " mul r6, r6, r0\n" + " add r0, r6, #0\n" + " ldr r1, ._161 + 8\n" + "._149:\n" + " add r0, r0, r1\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " add r0, r4, #0\n" + " mov r2, #0x1\n" + " bl sub_8044210\n" + " b ._163\n" + "._162:\n" + " .align 2, 0\n" + "._161:\n" + " .word 0x6010000\n" + " .word 0x5000040\n" + " .word gEnemyParty\n" + "._155:\n" + " ldrb r0, [r5]\n" + " bl draw_status_ailment_maybe\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mov r6, #0x64\n" + " mul r1, r1, r6\n" + " ldr r4, ._166\n" + " add r1, r1, r4\n" + " mov r2, #0x5\n" + " bl sub_8045A5C\n" + " ldr r0, ._166 + 4\n" + " ldrh r1, [r0]\n" + " mov r0, #0x80\n" + " and r0, r0, r1\n" + " cmp r0, #0\n" + " beq ._163 @cond_branch\n" + " ldrb r0, [r5]\n" + " ldrh r1, [r7]\n" + " mul r1, r1, r6\n" + " add r1, r1, r4\n" + " mov r2, #0x4\n" + " bl sub_8045A5C\n" + "._163:\n" + " ldr r0, ._166 + 8\n" + " add r0, r0, r8\n" + " ldrb r1, [r0]\n" + " lsl r0, r1, #0x4\n" + " add r0, r0, r1\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r9\n" + " ldrh r1, [r0, #0x3c]\n" + " mov r2, #0x1\n" + " eor r1, r1, r2\n" + " strh r1, [r0, #0x3c]\n" + "._147:\n" + " add r7, r7, #0x2\n" + " mov r2, #0x1\n" + " add r8, r8, r2\n" + " ldr r0, ._166 + 12\n" + " ldrb r0, [r0]\n" + " cmp r8, r0\n" + " bge ._164 @cond_branch\n" + " b ._165\n" + "._164:\n" + " add sp, sp, #0x4\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._167:\n" + " .align 2, 0\n" + "._166:\n" + " .word gEnemyParty\n" + " .word gBattleTypeFlags\n" + " .word gHealthboxIDs\n" + " .word gNoOfAllBanks\n" + "\n" + ); +} +#else void sub_804454C(void) { s32 i; @@ -1344,6 +1691,7 @@ void sub_804454C(void) } } } +#endif // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING @@ -2359,7 +2707,7 @@ void sub_8045180(struct Sprite *sprite) sprite->pos2.y = gSprites[spriteId].pos2.y; } -static void sub_80451A0(u8 a, struct Pokemon *pkmn) +/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn) { u8 nickname[POKEMON_NAME_LENGTH]; u8 gender; @@ -2507,7 +2855,7 @@ static void sub_8045458(u8 a, u8 b) } } -static void draw_status_ailment_maybe(u8 a) +/*static*/ void draw_status_ailment_maybe(u8 a) { s32 r4; s32 r4_2; @@ -2649,7 +2997,7 @@ static u8 sub_80457E8(u8 a, u8 b) return ret; } -static void sub_80458B0(u8 a) +/*static*/ void sub_80458B0(u8 a) { u8 *r6; u8 r8; @@ -2675,7 +3023,7 @@ static void sub_80458B0(u8 a) } -static void sub_8045998(u8 a) +/*static*/ void sub_8045998(u8 a) { u8 *r7; u8 status; @@ -2697,6 +3045,310 @@ static void sub_8045998(u8 a) } } +#ifdef DEBUG +__attribute__((naked)) +void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) +{ + asm( + " push {r4, r5, r6, r7, lr}\n" + " mov r7, sl\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5, r6, r7}\n" + " add sp, sp, #0xfffffff8\n" + " mov r9, r1\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov r8, r0\n" + " lsl r2, r2, #0x18\n" + " lsr r7, r2, #0x18\n" + " ldr r1, ._429\n" + " lsl r0, r0, #0x4\n" + " add r0, r0, r8\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r1\n" + " ldrh r0, [r0, #0x3a]\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " mov sl, r0\n" + " bl GetBankSide\n" + " lsl r0, r0, #0x18\n" + " cmp r0, #0\n" + " beq ._410 @cond_branch\n" + " b ._411\n" + "._410:\n" + " cmp r7, #0x3\n" + " beq ._412 @cond_branch\n" + " cmp r7, #0\n" + " bne ._413 @cond_branch\n" + "._412:\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r8\n" + " bl sub_8043FC0\n" + "._413:\n" + " cmp r7, #0x1\n" + " bhi ._414 @cond_branch\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x0\n" + " bl sub_80440EC\n" + "._414:\n" + " cmp r7, #0x2\n" + " beq ._415 @cond_branch\n" + " cmp r7, #0\n" + " bne ._416 @cond_branch\n" + "._415:\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " bl sub_80440EC\n" + "._416:\n" + " cmp r7, #0x5\n" + " beq ._417 @cond_branch\n" + " cmp r7, #0\n" + " bne ._418 @cond_branch\n" + "._417:\n" + " mov r0, #0x0\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " add r2, r4, #0\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._418:\n" + " bl IsDoubleBattle\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " str r0, [sp, #0x4]\n" + " cmp r0, #0\n" + " bne ._421 @cond_branch\n" + " cmp r7, #0x6\n" + " beq ._420 @cond_branch\n" + " cmp r7, #0\n" + " bne ._421 @cond_branch\n" + "._420:\n" + " mov r0, #0x3\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0xb\n" + " bl GetMonData\n" + " add r5, r0, #0\n" + " lsl r5, r5, #0x10\n" + " lsr r5, r5, #0x10\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " lsl r4, r4, #0x18\n" + " lsr r4, r4, #0x18\n" + " mov r0, r9\n" + " mov r1, #0x19\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " ldr r6, ._429 + 4\n" + " lsl r1, r4, #0x2\n" + " ldr r2, ._429 + 8\n" + " lsl r0, r5, #0x3\n" + " sub r0, r0, r5\n" + " lsl r0, r0, #0x2\n" + " add r0, r0, r2\n" + " ldrb r2, [r0, #0x13]\n" + " mov r0, #0xca\n" + " lsl r0, r0, #0x1\n" + " mul r0, r0, r2\n" + " add r1, r1, r0\n" + " add r1, r1, r6\n" + " ldr r1, [r1]\n" + " sub r3, r3, r1\n" + " add r4, r4, #0x1\n" + " lsl r4, r4, #0x2\n" + " add r4, r4, r0\n" + " add r4, r4, r6\n" + " ldr r2, [r4]\n" + " sub r2, r2, r1\n" + " ldr r0, [sp, #0x4]\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x1\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._421:\n" + " cmp r7, #0x4\n" + " beq ._422 @cond_branch\n" + " cmp r7, #0\n" + " bne ._423 @cond_branch\n" + "._422:\n" + " mov r0, r8\n" + " mov r1, r9\n" + " bl sub_80451A0\n" + "._423:\n" + " cmp r7, #0x9\n" + " beq ._424 @cond_branch\n" + " cmp r7, #0\n" + " bne ._425 @cond_branch\n" + "._424:\n" + " mov r0, r8\n" + " bl draw_status_ailment_maybe\n" + "._425:\n" + " cmp r7, #0xa\n" + " bne ._426 @cond_branch\n" + " mov r0, r8\n" + " bl sub_80458B0\n" + "._426:\n" + " add r0, r7, #0\n" + " sub r0, r0, #0xa\n" + " lsl r0, r0, #0x18\n" + " lsr r0, r0, #0x18\n" + " cmp r0, #0x1\n" + " bhi ._442 @cond_branch\n" + " mov r0, r8\n" + " bl sub_8045998\n" + " b ._442\n" + "._430:\n" + " .align 2, 0\n" + "._429:\n" + " .word gSprites\n" + " .word gExperienceTables\n" + " .word gBaseStats\n" + "._411:\n" + " cmp r7, #0x3\n" + " beq ._431 @cond_branch\n" + " cmp r7, #0\n" + " bne ._432 @cond_branch\n" + "._431:\n" + " mov r0, r9\n" + " mov r1, #0x38\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x18\n" + " lsr r1, r1, #0x18\n" + " mov r0, r8\n" + " bl sub_8043FC0\n" + "._432:\n" + " ldr r0, ._443\n" + " ldrb r0, [r0]\n" + " cmp r0, #0x1\n" + " bne ._436 @cond_branch\n" + " cmp r7, #0x1\n" + " bhi ._434 @cond_branch\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x0\n" + " bl sub_80440EC\n" + "._434:\n" + " cmp r7, #0x2\n" + " beq ._435 @cond_branch\n" + " cmp r7, #0\n" + " bne ._436 @cond_branch\n" + "._435:\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r1, r0, #0\n" + " lsl r1, r1, #0x10\n" + " asr r1, r1, #0x10\n" + " mov r0, r8\n" + " mov r2, #0x1\n" + " bl sub_80440EC\n" + "._436:\n" + " cmp r7, #0x5\n" + " beq ._437 @cond_branch\n" + " cmp r7, #0\n" + " bne ._438 @cond_branch\n" + "._437:\n" + " mov r0, #0x0\n" + " bl load_gfxc_health_bar\n" + " mov r0, r9\n" + " mov r1, #0x3a\n" + " bl GetMonData\n" + " add r4, r0, #0\n" + " mov r0, r9\n" + " mov r1, #0x39\n" + " bl GetMonData\n" + " add r3, r0, #0\n" + " mov r0, #0x0\n" + " str r0, [sp]\n" + " mov r0, sl\n" + " mov r1, r8\n" + " add r2, r4, #0\n" + " bl sub_8043D84\n" + " mov r0, sl\n" + " mov r1, r8\n" + " mov r2, #0x0\n" + " mov r3, #0x0\n" + " bl sub_8045C78\n" + "._438:\n" + " cmp r7, #0x4\n" + " beq ._439 @cond_branch\n" + " cmp r7, #0\n" + " bne ._440 @cond_branch\n" + "._439:\n" + " mov r0, r8\n" + " mov r1, r9\n" + " bl sub_80451A0\n" + "._440:\n" + " cmp r7, #0x9\n" + " beq ._441 @cond_branch\n" + " cmp r7, #0\n" + " bne ._442 @cond_branch\n" + "._441:\n" + " mov r0, r8\n" + " bl draw_status_ailment_maybe\n" + "._442:\n" + " add sp, sp, #0x8\n" + " pop {r3, r4, r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov sl, r5\n" + " pop {r4, r5, r6, r7}\n" + " pop {r0}\n" + " bx r0\n" + "._444:\n" + " .align 2, 0\n" + "._443:\n" + " .word gUnknown_020297ED\n" + "\n" + ); +} +#else void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { u8 r10; @@ -2766,6 +3418,7 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) draw_status_ailment_maybe(a); } } +#endif s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) { -- cgit v1.2.3 From d79f440b8d4c5af26a98011719807b05745533e1 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 12:10:41 -0600 Subject: use 'if DEBUG' instead of 'ifdef DEBUG' --- src/battle/battle_interface.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index f7734301c..b19547d52 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -3045,7 +3045,7 @@ static u8 sub_80457E8(u8 a, u8 b) } } -#ifdef DEBUG +#if DEBUG __attribute__((naked)) void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { -- cgit v1.2.3 From 6efb614f3f3bf1b1b381bdfe220391e152fc8ebe Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Wed, 17 Jan 2018 15:49:51 -0600 Subject: add more debug things --- src/battle/battle_interface.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index b19547d52..1b6240159 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -1405,7 +1405,7 @@ void sub_804454C() " add r1, r1, r0\n" " mov r0, sp\n" " ldr r2, ._150 + 36\n" - " bl gScriptFuncs_End+0x3cb4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" @@ -1467,7 +1467,7 @@ void sub_804454C() " ldr r2, ._153 + 4\n" " add r1, r1, r2\n" " ldr r2, ._153 + 8\n" - " bl gScriptFuncs_End+0x3cb4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" " b ._163\n" "._154:\n" " .align 2, 0\n" @@ -1521,7 +1521,7 @@ void sub_804454C() " add r1, r1, r6\n" " mov r0, sp\n" " ldr r2, ._161 + 4\n" - " bl gScriptFuncs_End+0x3cb4\n" + " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" -- cgit v1.2.3 From 37396ce835e702248b9e8fa1bbaec07b8b64ab4f Mon Sep 17 00:00:00 2001 From: "Marco Willems (M17.1)" Date: Fri, 19 Jan 2018 17:18:14 +0100 Subject: switching over to a different branch for testing with tile stuff --- src/battle/battle_interface.c | 258 ++++++++++++++++++------------------------ 1 file changed, 112 insertions(+), 146 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 12d7f48b2..14e161c75 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -313,113 +313,113 @@ const struct SpriteTemplate gSpriteTemplate_820A7EC = .callback = sub_804507C, }; -TileData4bpp *const gUnknown_0820A804[2] = +u8 *const gUnknown_0820A804[2] = { - &OBJ_VRAM0_TEMP[74], - &OBJ_VRAM0_TEMP[75], + OBJ_VRAM0 + 32 * 74, + OBJ_VRAM0 + 32 * 75, }; -TileData4bpp *const gUnknown_0820A80C[2] = +u8 *const gUnknown_0820A80C[2] = { - &OBJ_VRAM0_TEMP[41], - &OBJ_VRAM0_TEMP[42], + OBJ_VRAM0 + 32 * 41, + OBJ_VRAM0 + 32 * 42, }; -TileData4bpp *const gUnknown_0820A814[2] = +u8 *const gUnknown_0820A814[2] = { - &OBJ_VRAM0_TEMP[42], - &OBJ_VRAM0_TEMP[43], + OBJ_VRAM0 + 32 * 42, + OBJ_VRAM0 + 32 * 43, }; const u8 gUnknown_0820A81C[] = __("{COLOR DARK_GREY}{HIGHLIGHT RED} "); -TileData4bpp *const gUnknown_0820A83C[3] = +u8 *const gUnknown_0820A83C[3] = { - &OBJ_VRAM0_TEMP[31], - &OBJ_VRAM0_TEMP[88], - &OBJ_VRAM0_TEMP[89], + OBJ_VRAM0 + 32 * 31, + OBJ_VRAM0 + 32 * 88, + OBJ_VRAM0 + 32 * 89, }; -TileData4bpp *const gUnknown_0820A848[3] = +u8 *const gUnknown_0820A848[3] = { - &OBJ_VRAM0_TEMP[22], - &OBJ_VRAM0_TEMP[23], - &OBJ_VRAM0_TEMP[48], + OBJ_VRAM0 + 32 * 22, + OBJ_VRAM0 + 32 * 23, + OBJ_VRAM0 + 32 * 48, }; -TileData4bpp *const gUnknown_0820A854[2] = +u8 *const gUnknown_0820A854[2] = { - &OBJ_VRAM0_TEMP[90], - &OBJ_VRAM0_TEMP[91], + OBJ_VRAM0 + 32 * 90, + OBJ_VRAM0 + 32 * 91, }; -TileData4bpp *const gUnknown_0820A85C[2] = +u8 *const gUnknown_0820A85C[2] = { - &OBJ_VRAM0_TEMP[49], - &OBJ_VRAM0_TEMP[50], + OBJ_VRAM0 + 32 * 49, + OBJ_VRAM0 + 32 * 50, }; const u8 gUnknown_0820A864[] = _("{COLOR DARK_GREY}{HIGHLIGHT RED} /"); -TileData4bpp *const gUnknown_0820A87C[6] = +u8 *const gUnknown_0820A87C[6] = { - &OBJ_VRAM0_TEMP[0], - &OBJ_VRAM0_TEMP[1], - &OBJ_VRAM0_TEMP[2], - &OBJ_VRAM0_TEMP[3], - &OBJ_VRAM0_TEMP[4], - &OBJ_VRAM0_TEMP[5], + OBJ_VRAM0 + 32 * 0, + OBJ_VRAM0 + 32 * 1, + OBJ_VRAM0 + 32 * 2, + OBJ_VRAM0 + 32 * 3, + OBJ_VRAM0 + 32 * 4, + OBJ_VRAM0 + 32 * 5, }; -TileData4bpp *const gUnknown_0820A894[2] = +u8 *const gUnknown_0820A894[2] = { - &OBJ_VRAM0_TEMP[6], - &OBJ_VRAM0_TEMP[7], + OBJ_VRAM0 + 32 * 6, + OBJ_VRAM0 + 32 * 7, }; const u8 gUnknown_0820A89C[] = __("{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT} "); const u8 gUnknown_0820A8B0[] = _("{HIGHLIGHT RED}"); -TileData4bpp *const gUnknown_0820A8B4[10] = -{ - &OBJ_VRAM0_TEMP[ 2], - &OBJ_VRAM0_TEMP[ 3], - &OBJ_VRAM0_TEMP[ 4], - &OBJ_VRAM0_TEMP[ 5], - &OBJ_VRAM0_TEMP[ 6], - &OBJ_VRAM0_TEMP[ 7], - &OBJ_VRAM0_TEMP[64], - &OBJ_VRAM0_TEMP[65], - &OBJ_VRAM0_TEMP[66], - &OBJ_VRAM0_TEMP[67], +u8 *const gUnknown_0820A8B4[10] = +{ + OBJ_VRAM0 + 32 * 2, + OBJ_VRAM0 + 32 * 3, + OBJ_VRAM0 + 32 * 4, + OBJ_VRAM0 + 32 * 5, + OBJ_VRAM0 + 32 * 6, + OBJ_VRAM0 + 32 * 7, + OBJ_VRAM0 + 32 * 64, + OBJ_VRAM0 + 32 * 65, + OBJ_VRAM0 + 32 * 66, + OBJ_VRAM0 + 32 * 67, }; -TileData4bpp *const gUnknown_0820A8DC[10] = -{ - &OBJ_VRAM0_TEMP[ 1], - &OBJ_VRAM0_TEMP[ 2], - &OBJ_VRAM0_TEMP[ 3], - &OBJ_VRAM0_TEMP[ 4], - &OBJ_VRAM0_TEMP[ 5], - &OBJ_VRAM0_TEMP[ 6], - &OBJ_VRAM0_TEMP[ 7], - &OBJ_VRAM0_TEMP[32], - &OBJ_VRAM0_TEMP[33], - &OBJ_VRAM0_TEMP[34], +u8 *const gUnknown_0820A8DC[10] = +{ + OBJ_VRAM0 + 32 * 1, + OBJ_VRAM0 + 32 * 2, + OBJ_VRAM0 + 32 * 3, + OBJ_VRAM0 + 32 * 4, + OBJ_VRAM0 + 32 * 5, + OBJ_VRAM0 + 32 * 6, + OBJ_VRAM0 + 32 * 7, + OBJ_VRAM0 + 32 * 32, + OBJ_VRAM0 + 32 * 33, + OBJ_VRAM0 + 32 * 34, }; -TileData4bpp *const gUnknown_0820A904[10] = -{ - &OBJ_VRAM0_TEMP[ 2], - &OBJ_VRAM0_TEMP[ 3], - &OBJ_VRAM0_TEMP[ 4], - &OBJ_VRAM0_TEMP[ 5], - &OBJ_VRAM0_TEMP[ 6], - &OBJ_VRAM0_TEMP[ 7], - &OBJ_VRAM0_TEMP[32], - &OBJ_VRAM0_TEMP[33], - &OBJ_VRAM0_TEMP[34], - &OBJ_VRAM0_TEMP[35], +u8 *const gUnknown_0820A904[10] = +{ + OBJ_VRAM0 + 32 * 2, + OBJ_VRAM0 + 32 * 3, + OBJ_VRAM0 + 32 * 4, + OBJ_VRAM0 + 32 * 5, + OBJ_VRAM0 + 32 * 6, + OBJ_VRAM0 + 32 * 7, + OBJ_VRAM0 + 32 * 32, + OBJ_VRAM0 + 32 * 33, + OBJ_VRAM0 + 32 * 34, + OBJ_VRAM0 + 32 * 35, }; extern u8 gDisplayedStringBattle[]; @@ -434,7 +434,6 @@ extern const u8 BattleText_SafariBalls[]; extern const u8 BattleText_SafariBallsLeft[]; extern const u8 BattleText_HighlightRed[]; extern const u8 gUnknown_08D1216C[][32]; -// extern const TileData4bpp gUnknown_08D1216C[]; // graphics extern const u16 gBattleInterfaceStatusIcons_DynPal[]; @@ -444,7 +443,6 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[]; static void sub_8043D5C(struct Sprite *); static const void *sub_8043CDC(u8); -// static const TileData4bpp *sub_8043CDC(u8); static void sub_8044210(u8, s16, u8); static void draw_status_ailment_maybe(u8); extern void sub_8045180(struct Sprite *); @@ -843,8 +841,7 @@ u8 battle_make_oam_normal_battle(u8 a) SetSubspriteTables(sprite, &gSubspriteTables_820A684[GetBankSide(a)]); sprite->subspriteMode = 2; sprite->oam.priority = 1; - // CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + sprite->oam.tileNum * 32, 64); - CpuCopy32(sub_8043CDC(1), &OBJ_VRAM0_TEMP[sprite->oam.tileNum], 64); + CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + sprite->oam.tileNum * 32, 64); gSprites[spriteId1].data[5] = spriteId3; gSprites[spriteId1].data[6] = a; @@ -872,10 +869,8 @@ u8 battle_make_oam_safari_battle(void) } static const void *sub_8043CDC(u8 a) -// static const TileData4bpp *sub_8043CDC(u8 a) { return gUnknown_08D1216C[a]; - // return &gUnknown_08D1216C[a]; } static void sub_8043CEC(struct Sprite *sprite) @@ -1023,8 +1018,7 @@ void sub_8043F44(u8 a) static void sub_8043FC0(u8 a, u8 b) { u8 str[30]; - // void *const *r7; - TileData4bpp *const *r7; + u8 *const *r7; u8 *ptr; s32 i; s32 two; @@ -1074,7 +1068,7 @@ static void sub_8043FC0(u8 a, u8 b) two = 2; for (i = 0; i < two; i++) - CpuCopy32((void *)(ewram0_9(1) + i * 64), r7[i] + gSprites[a].oam.tileNum, 32); + CpuCopy32((void *)(ewram0_9(1) + i * 64), r7[i] + gSprites[a].oam.tileNum * 32, 32); } #ifdef NONMATCHING @@ -1083,7 +1077,7 @@ void sub_80440EC(u8 a, s16 b, u8 c) u8 str[0x14]; u8 *ptr; s32 foo; - void *const *r4; + u8 *const *r4; s32 i; // TODO: make this a local variable @@ -1279,8 +1273,7 @@ static void sub_8044210(u8 a, s16 b, u8 c) { u8 str[0x14]; u8 *ptr; - // void *const *r7; - TileData4bpp *const *r7; + u8 *const *r7; int r10; int r4; int i; @@ -1306,17 +1299,14 @@ static void sub_8044210(u8 a, s16 b, u8 c) sub_8003504(ptr, b, 0xF, 1); if (GetBankSide(r4) == 0) { - int r2 = 52; - // CpuCopy32(sub_8043CDC(0x74), OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x34) * 32, 32); - CpuCopy32(sub_8043CDC(0x74), &OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + r2], 32); + CpuCopy32(sub_8043CDC(0x74), OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x34) * 32, 32); } } r4 = gSprites[a].data[5]; sub_80034D4(ewram0_9(0), str); for (i = 0; i < r10; i++) { - // CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 32); - CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum, 32); + CpuCopy32((void *)(ewram0_9(1) + i * 0x40), r7[i] + gSprites[r4].oam.tileNum * 32, 32); } } @@ -1678,19 +1668,15 @@ void sub_804454C(void) { spriteId = gSprites[gHealthboxIDs[i]].data[5]; - // CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); - CpuFill32(0, &OBJ_VRAM0_TEMP[gSprites[spriteId].oam.tileNum], 256); + CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), 0); sub_8044210(gHealthboxIDs[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); } else { - int temp; draw_status_ailment_maybe(gHealthboxIDs[i]); sub_8045A5C(gHealthboxIDs[i], &gPlayerParty[gBattlePartyID[i]], 5); - temp = 52; - // CpuCopy32(sub_8043CDC(0x75), OBJ_VRAM0 + 0x680 + gSprites[gHealthboxIDs[i]].oam.tileNum * 32, 32); - CpuCopy32(sub_8043CDC(0x75), &OBJ_VRAM0_TEMP[gSprites[gHealthboxIDs[i]].oam.tileNum + temp], 32); + CpuCopy32(sub_8043CDC(0x75), OBJ_VRAM0 + 0x680 + gSprites[gHealthboxIDs[i]].oam.tileNum * 32, 32); } } else @@ -1705,8 +1691,7 @@ void sub_804454C(void) { spriteId = gSprites[gHealthboxIDs[i]].data[5]; - // CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); - CpuFill32(0, &OBJ_VRAM0_TEMP[gSprites[spriteId].oam.tileNum], 256); + CpuFill32(0, OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32, 0x100); sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), 0); sub_8044210(gHealthboxIDs[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), 1); } @@ -2747,8 +2732,7 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) u8 *ptr; s32 i; s32 _7; - TileData4bpp *const *r1; - TileData4bpp *tileDataSrc; + u8 *const *r1; StringCopy(gDisplayedStringBattle, gUnknown_0820A8B0); GetMonData(pkmn, MON_DATA_NICKNAME, nickname); @@ -2823,44 +2807,42 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) } } - tileDataSrc = (TileData4bpp *) ptr; - for (; i < _7; i++) - CpuCopy32(sub_8043CDC(0x2B), tileDataSrc + 2 * i, 32); + CpuCopy32(sub_8043CDC(0x2B), ptr + 64 * i, 32); if (GetBankSide(gSprites[a].data[6]) == 0 && !IsDoubleBattle()) { - r1 = gUnknown_0820A8B4; + r1 = (u8 *const *)gUnknown_0820A8B4; for (i = 0; i < _7; i++) { - TileData4bpp *tileDataDest = r1[i]; + u8 *r4 = r1[i]; - tileDataDest += gSprites[a].oam.tileNum; - CpuCopy32(tileDataSrc, tileDataDest, 32); - tileDataSrc++; + r4 += gSprites[a].oam.tileNum * 32; + CpuCopy32(ptr, r4, 32); + ptr += 32; - tileDataDest += 8; - CpuCopy32(tileDataSrc, tileDataDest, 32); - tileDataSrc++; + r4 += 0x100; + CpuCopy32(ptr, r4, 32); + ptr += 32; } } else { if (GetBankSide(gSprites[a].data[6]) == 0) - r1 = gUnknown_0820A904; + r1 = (u8 *const *)gUnknown_0820A904; else - r1 = gUnknown_0820A8DC; + r1 = (u8 *const *)gUnknown_0820A8DC; for (i = 0; i < _7; i++) { - TileData4bpp *tileDataDest = r1[i]; + u8 *r4 = r1[i]; - tileDataDest += gSprites[a].oam.tileNum; - CpuCopy32(tileDataSrc, tileDataDest, 32); - tileDataSrc++; + r4 += gSprites[a].oam.tileNum * 32; + CpuCopy32(ptr, r4, 32); + ptr += 32; - tileDataDest += 8; - CpuCopy32(tileDataSrc, tileDataDest, 32); - tileDataSrc++; + r4 += 0x100; + CpuCopy32(ptr, r4, 32); + ptr += 32; } } } @@ -2880,14 +2862,11 @@ static void sub_8045458(u8 a, u8 b) u16 species = GetMonData(&gEnemyParty[gBattlePartyID[r4]], MON_DATA_SPECIES); if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) { - int temp = 8; r4 = gSprites[a].data[5]; if (b != 0) - // CpuCopy32(sub_8043CDC(0x46), OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); - CpuCopy32(sub_8043CDC(0x46), &OBJ_VRAM0_TEMP[gSprites[r4].oam.tileNum + temp], 32); + CpuCopy32(sub_8043CDC(0x46), OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); else - // CpuFill32(0, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); - CpuFill32(0, &OBJ_VRAM0_TEMP[gSprites[r4].oam.tileNum + temp], 32); + CpuFill32(0, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 8) * 32, 32); } } } @@ -2948,12 +2927,10 @@ static void draw_status_ailment_maybe(u8 a) r6 = sub_8043CDC(0x27); for (i = 0; i < 3; i++) - // CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8 + i) * 32, 32); - CpuCopy32(r6, &OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + r8 + i], 32); + CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8 + i) * 32, 32); if (!ewram17800[r7].unk0_4) - // CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 64); - CpuCopy32(sub_8043CDC(1), &OBJ_VRAM0_TEMP[gSprites[r10].oam.tileNum], 64); + CpuCopy32(sub_8043CDC(1), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 64); sub_8045458(a, 1); return; @@ -2964,17 +2941,13 @@ static void draw_status_ailment_maybe(u8 a) // I don't like writing the array index like this, but I can't get it to match otherwise. FillPalette(r0[gBattleInterfaceStatusIcons_DynPal], r4_2 + 0x100, 2); CpuCopy16(gPlttBufferUnfaded + 0x100 + r4_2, (void *)(OBJ_PLTT + r4_2 * 2), 2); - // CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8) * 32, 96); - CpuCopy32(r6, OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + r8], 96); + CpuCopy32(r6, OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8) * 32, 96); if (IsDoubleBattle() == TRUE || GetBankSide(r7) == TRUE) { if (!ewram17800[r7].unk0_4) { - // CpuCopy32(sub_8043CDC(0), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 32); - // CpuCopy32(sub_8043CDC(0x41), OBJ_VRAM0 + (gSprites[r10].oam.tileNum + 1) * 32, 32); - int temp = 1; - CpuCopy32(sub_8043CDC(0), OBJ_VRAM0_TEMP[gSprites[r10].oam.tileNum], 32); - CpuCopy32(sub_8043CDC(0x41), OBJ_VRAM0_TEMP[gSprites[r10].oam.tileNum + temp], 32); + CpuCopy32(sub_8043CDC(0), OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32, 32); + CpuCopy32(sub_8043CDC(0x41), OBJ_VRAM0 + (gSprites[r10].oam.tileNum + 1) * 32, 32); } } sub_8045458(a, 0); @@ -3055,13 +3028,11 @@ static void sub_80458B0(u8 a) CpuCopy32(sub_8043CDC(0x2B), r6 + i * 64, 32); for (r7 = 3; r7 < 3 + r8; r7++) { - // addr = OBJ_VRAM0 + (gSprites[a].oam.tileNum + MACRO1(r7)) * 32; - addr = OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + MACRO1(r7)]; + addr = OBJ_VRAM0 + (gSprites[a].oam.tileNum + MACRO1(r7)) * 32; CpuCopy32(r6, addr, 32); r6 += 32; - // addr = OBJ_VRAM0 + (8 + gSprites[a].oam.tileNum + MACRO1(r7)) * 32; - addr = OBJ_VRAM0_TEMP[8 + gSprites[a].oam.tileNum + MACRO1(r7)]; + addr = OBJ_VRAM0 + (8 + gSprites[a].oam.tileNum + MACRO1(r7)) * 32; CpuCopy32(r6, addr, 32); r6 += 32; } @@ -3085,8 +3056,7 @@ static void sub_8045998(u8 a) r7 = ewram520_2 + status * 0x180 + 32; for (i = 6; i < 6 + r6; i++) { - // CpuCopy32(r7, OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x18 + MACRO1(i)) * 32, 32); - CpuCopy32(r7, OBJ_VRAM0_TEMP[gSprites[a].oam.tileNum + 24 + MACRO1(i)], 32); + CpuCopy32(r7, OBJ_VRAM0 + (gSprites[a].oam.tileNum + 0x18 + MACRO1(i)) * 32, 32); r7 += 64; } } @@ -3210,11 +3180,9 @@ static void sub_8045D58(u8 a, u8 b) { u8 r4 = gSprites[ewram17850[a].unk0].data[5]; if (i < 2) - // CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 2 + i) * 32, 32); - CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0_TEMP[gSprites[r4].oam.tileNum + 2 + i], 32); + CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[r4].oam.tileNum + 2 + i) * 32, 32); else - // CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + 64 + (i + gSprites[r4].oam.tileNum) * 32, 32); - CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0_TEMP[i + gSprites[r4].oam.tileNum + 2], 32); + CpuCopy32(sub_8043CDC(r8) + sp8[i] * 32, OBJ_VRAM0 + 64 + (i + gSprites[r4].oam.tileNum) * 32, 32); } break; case 1: @@ -3228,11 +3196,9 @@ static void sub_8045D58(u8 a, u8 b) for (i = 0; i < 8; i++) { if (i < 4) - // CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[ewram17850[a].unk0].oam.tileNum + 0x24 + i) * 32, 32); - CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0_TEMP[gSprites[ewram17850[a].unk0].oam.tileNum + 36 + i], 32); + CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + (gSprites[ewram17850[a].unk0].oam.tileNum + 0x24 + i) * 32, 32); else - // CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + 0xB80 + (i + gSprites[ewram17850[a].unk0].oam.tileNum) * 32, 32); - CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0_TEMP[i + gSprites[ewram17850[a].unk0].oam.tileNum + 92], 32); + CpuCopy32(sub_8043CDC(0xC) + sp8[i] * 32, OBJ_VRAM0 + 0xB80 + (i + gSprites[ewram17850[a].unk0].oam.tileNum) * 32, 32); } break; } -- cgit v1.2.3 From 0f09d2e7046a54c95e2ed4a7ff759d4cd1db87f7 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Mon, 22 Jan 2018 22:35:27 -0600 Subject: fix false gMysteryEventScriptCmdTableEnd offsets --- src/battle/battle_interface.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index 1b6240159..b703bc7b8 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -1405,7 +1405,7 @@ void sub_804454C() " add r1, r1, r0\n" " mov r0, sp\n" " ldr r2, ._150 + 36\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" + " bl CpuSet\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" @@ -1467,7 +1467,7 @@ void sub_804454C() " ldr r2, ._153 + 4\n" " add r1, r1, r2\n" " ldr r2, ._153 + 8\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" + " bl CpuSet\n" " b ._163\n" "._154:\n" " .align 2, 0\n" @@ -1521,7 +1521,7 @@ void sub_804454C() " add r1, r1, r6\n" " mov r0, sp\n" " ldr r2, ._161 + 4\n" - " bl gMysteryEventScriptCmdTableEnd+0x3cb4\n" + " bl CpuSet\n" " ldrb r4, [r5]\n" " ldrh r0, [r7]\n" " mov r1, sl\n" -- cgit v1.2.3 From e50f5e906776a799ec69418168f032880e16384c Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Thu, 25 Jan 2018 19:36:54 -0600 Subject: more debug integrations --- src/battle/battle_interface.c | 668 +----------------------------------------- 1 file changed, 15 insertions(+), 653 deletions(-) (limited to 'src/battle/battle_interface.c') diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c index b703bc7b8..9be026d53 100644 --- a/src/battle/battle_interface.c +++ b/src/battle/battle_interface.c @@ -1277,353 +1277,8 @@ _08044548: .4byte 0x04000008\n\ } #endif -#if DEBUG -__attribute__((naked)) -void sub_804454C() -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffffc\n" - " mov r0, #0x0\n" - " mov r8, r0\n" - " ldr r0, ._150\n" - " ldrb r0, [r0]\n" - " cmp r8, r0\n" - " blt ._133 @cond_branch\n" - " b ._164\n" - "._133:\n" - " ldr r1, ._150 + 4\n" - " mov r9, r1\n" - " mov r2, #0x64\n" - " mov sl, r2\n" - " ldr r7, ._150 + 8\n" - "._165:\n" - " ldr r0, ._150 + 12\n" - " mov r6, r8\n" - " add r5, r6, r0\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " mov r1, r9\n" - " add r1, r1, #0x1c\n" - " add r0, r0, r1\n" - " ldr r1, [r0]\n" - " ldr r0, ._150 + 16\n" - " cmp r1, r0\n" - " beq ._135 @cond_branch\n" - " b ._147\n" - "._135:\n" - " ldr r0, ._150 + 20\n" - " ldrb r0, [r0]\n" - " lsl r4, r6, #0x18\n" - " cmp r0, #0\n" - " bne ._138 @cond_branch\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bne ._138 @cond_branch\n" - " b ._147\n" - "._138:\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._141 @cond_branch\n" - " b ._147\n" - "._141:\n" - " mov r0, r8\n" - " lsl r3, r0, #0x2\n" - " ldr r0, ._150 + 24\n" - " add r3, r3, r0\n" - " ldr r0, [r3]\n" - " lsl r0, r0, #0x1b\n" - " lsr r0, r0, #0x1f\n" - " mov r2, #0x1\n" - " eor r2, r2, r0\n" - " lsl r2, r2, #0x4\n" - " ldrb r0, [r3]\n" - " mov r6, #0x11\n" - " neg r6, r6\n" - " add r1, r6, #0\n" - " and r0, r0, r1\n" - " orr r0, r0, r2\n" - " strb r0, [r3]\n" - " ldr r0, [r3]\n" - " lsl r0, r0, #0x1b\n" - " lsr r6, r0, #0x1f\n" - " lsr r0, r4, #0x18\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._143 @cond_branch\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " bne ._144 @cond_branch\n" - " b ._147\n" - "._144:\n" - " ldr r0, ._150 + 28\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._146 @cond_branch\n" - " b ._147\n" - "._146:\n" - " cmp r6, #0x1\n" - " bne ._148 @cond_branch\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r0, [r0, #0x38]\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " str r2, [sp]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r0, ._150 + 32\n" - " add r1, r1, r0\n" - " mov r0, sp\n" - " ldr r2, ._150 + 36\n" - " bl CpuSet\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r1, sl\n" - " mul r1, r1, r0\n" - " add r0, r1, #0\n" - " ldr r2, ._150 + 40\n" - " add r0, r0, r2\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " bl sub_8044210\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r0\n" - " add r0, r6, #0\n" - " ldr r1, ._150 + 40\n" - " b ._149\n" - "._151:\n" - " .align 2, 0\n" - "._150:\n" - " .word gNoOfAllBanks\n" - " .word gSprites\n" - " .word gBattlePartyID\n" - " .word gHealthboxIDs\n" - " .word SpriteCallbackDummy+1\n" - " .word gUnknown_020297ED\n" - " .word +0x2017800\n" - " .word gBattleTypeFlags\n" - " .word 0x6010000\n" - " .word 0x5000040\n" - " .word gPlayerParty\n" - "._148:\n" - " ldrb r0, [r5]\n" - " bl draw_status_ailment_maybe\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r2, sl\n" - " mul r2, r2, r1\n" - " add r1, r2, #0\n" - " ldr r6, ._153\n" - " add r1, r1, r6\n" - " mov r2, #0x5\n" - " bl sub_8045A5C\n" - " mov r0, #0x75\n" - " bl sub_8043CDC\n" - " ldrb r2, [r5]\n" - " lsl r1, r2, #0x4\n" - " add r1, r1, r2\n" - " lsl r1, r1, #0x2\n" - " add r1, r1, r9\n" - " ldrh r1, [r1, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r2, ._153 + 4\n" - " add r1, r1, r2\n" - " ldr r2, ._153 + 8\n" - " bl CpuSet\n" - " b ._163\n" - "._154:\n" - " .align 2, 0\n" - "._153:\n" - " .word gPlayerParty\n" - " .word 0x6010680\n" - " .word 0x4000008\n" - "._143:\n" - " cmp r6, #0x1\n" - " bne ._155 @cond_branch\n" - " ldr r0, ._158\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " lsl r0, r0, #0x10\n" - " lsr r2, r0, #0x10\n" - " cmp r2, #0\n" - " beq ._156 @cond_branch\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r1\n" - " add r1, r6, #0\n" - " ldr r2, ._158 + 4\n" - " add r1, r1, r2\n" - " bl sub_8044338\n" - " b ._163\n" - "._159:\n" - " .align 2, 0\n" - "._158:\n" - " .word gBattleTypeFlags\n" - " .word gEnemyParty\n" - "._156:\n" - " ldrb r1, [r5]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r0, [r0, #0x38]\n" - " lsl r0, r0, #0x18\n" - " lsr r1, r0, #0x18\n" - " str r2, [sp]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x4]\n" - " lsl r1, r1, #0x16\n" - " lsr r1, r1, #0x11\n" - " ldr r6, ._161\n" - " add r1, r1, r6\n" - " mov r0, sp\n" - " ldr r2, ._161 + 4\n" - " bl CpuSet\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r1, sl\n" - " mul r1, r1, r0\n" - " add r0, r1, #0\n" - " ldr r2, ._161 + 8\n" - " add r0, r0, r2\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x0\n" - " bl sub_8044210\n" - " ldrb r4, [r5]\n" - " ldrh r0, [r7]\n" - " mov r6, sl\n" - " mul r6, r6, r0\n" - " add r0, r6, #0\n" - " ldr r1, ._161 + 8\n" - "._149:\n" - " add r0, r0, r1\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " add r0, r4, #0\n" - " mov r2, #0x1\n" - " bl sub_8044210\n" - " b ._163\n" - "._162:\n" - " .align 2, 0\n" - "._161:\n" - " .word 0x6010000\n" - " .word 0x5000040\n" - " .word gEnemyParty\n" - "._155:\n" - " ldrb r0, [r5]\n" - " bl draw_status_ailment_maybe\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mov r6, #0x64\n" - " mul r1, r1, r6\n" - " ldr r4, ._166\n" - " add r1, r1, r4\n" - " mov r2, #0x5\n" - " bl sub_8045A5C\n" - " ldr r0, ._166 + 4\n" - " ldrh r1, [r0]\n" - " mov r0, #0x80\n" - " and r0, r0, r1\n" - " cmp r0, #0\n" - " beq ._163 @cond_branch\n" - " ldrb r0, [r5]\n" - " ldrh r1, [r7]\n" - " mul r1, r1, r6\n" - " add r1, r1, r4\n" - " mov r2, #0x4\n" - " bl sub_8045A5C\n" - "._163:\n" - " ldr r0, ._166 + 8\n" - " add r0, r0, r8\n" - " ldrb r1, [r0]\n" - " lsl r0, r1, #0x4\n" - " add r0, r0, r1\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r9\n" - " ldrh r1, [r0, #0x3c]\n" - " mov r2, #0x1\n" - " eor r1, r1, r2\n" - " strh r1, [r0, #0x3c]\n" - "._147:\n" - " add r7, r7, #0x2\n" - " mov r2, #0x1\n" - " add r8, r8, r2\n" - " ldr r0, ._166 + 12\n" - " ldrb r0, [r0]\n" - " cmp r8, r0\n" - " bge ._164 @cond_branch\n" - " b ._165\n" - "._164:\n" - " add sp, sp, #0x4\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._167:\n" - " .align 2, 0\n" - "._166:\n" - " .word gEnemyParty\n" - " .word gBattleTypeFlags\n" - " .word gHealthboxIDs\n" - " .word gNoOfAllBanks\n" - "\n" - ); -} -#else +extern u8 gUnknown_020297ED; + void sub_804454C(void) { s32 i; @@ -1632,7 +1287,11 @@ void sub_804454C(void) for (i = 0; i < gNoOfAllBanks; i++) { if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy +#if DEBUG + && (gUnknown_020297ED != 0 || GetBankSide(i) != 1) +#else && GetBankSide(i) != 1 +#endif && (IsDoubleBattle() || GetBankSide(i) != 0)) { u8 r6; @@ -1691,7 +1350,6 @@ void sub_804454C(void) } } } -#endif // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING @@ -3045,310 +2703,6 @@ static u8 sub_80457E8(u8 a, u8 b) } } -#if DEBUG -__attribute__((naked)) -void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) -{ - asm( - " push {r4, r5, r6, r7, lr}\n" - " mov r7, sl\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5, r6, r7}\n" - " add sp, sp, #0xfffffff8\n" - " mov r9, r1\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov r8, r0\n" - " lsl r2, r2, #0x18\n" - " lsr r7, r2, #0x18\n" - " ldr r1, ._429\n" - " lsl r0, r0, #0x4\n" - " add r0, r0, r8\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r1\n" - " ldrh r0, [r0, #0x3a]\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " mov sl, r0\n" - " bl GetBankSide\n" - " lsl r0, r0, #0x18\n" - " cmp r0, #0\n" - " beq ._410 @cond_branch\n" - " b ._411\n" - "._410:\n" - " cmp r7, #0x3\n" - " beq ._412 @cond_branch\n" - " cmp r7, #0\n" - " bne ._413 @cond_branch\n" - "._412:\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r0, r8\n" - " bl sub_8043FC0\n" - "._413:\n" - " cmp r7, #0x1\n" - " bhi ._414 @cond_branch\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x0\n" - " bl sub_80440EC\n" - "._414:\n" - " cmp r7, #0x2\n" - " beq ._415 @cond_branch\n" - " cmp r7, #0\n" - " bne ._416 @cond_branch\n" - "._415:\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x1\n" - " bl sub_80440EC\n" - "._416:\n" - " cmp r7, #0x5\n" - " beq ._417 @cond_branch\n" - " cmp r7, #0\n" - " bne ._418 @cond_branch\n" - "._417:\n" - " mov r0, #0x0\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " add r2, r4, #0\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._418:\n" - " bl IsDoubleBattle\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " str r0, [sp, #0x4]\n" - " cmp r0, #0\n" - " bne ._421 @cond_branch\n" - " cmp r7, #0x6\n" - " beq ._420 @cond_branch\n" - " cmp r7, #0\n" - " bne ._421 @cond_branch\n" - "._420:\n" - " mov r0, #0x3\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0xb\n" - " bl GetMonData\n" - " add r5, r0, #0\n" - " lsl r5, r5, #0x10\n" - " lsr r5, r5, #0x10\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " lsl r4, r4, #0x18\n" - " lsr r4, r4, #0x18\n" - " mov r0, r9\n" - " mov r1, #0x19\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " ldr r6, ._429 + 4\n" - " lsl r1, r4, #0x2\n" - " ldr r2, ._429 + 8\n" - " lsl r0, r5, #0x3\n" - " sub r0, r0, r5\n" - " lsl r0, r0, #0x2\n" - " add r0, r0, r2\n" - " ldrb r2, [r0, #0x13]\n" - " mov r0, #0xca\n" - " lsl r0, r0, #0x1\n" - " mul r0, r0, r2\n" - " add r1, r1, r0\n" - " add r1, r1, r6\n" - " ldr r1, [r1]\n" - " sub r3, r3, r1\n" - " add r4, r4, #0x1\n" - " lsl r4, r4, #0x2\n" - " add r4, r4, r0\n" - " add r4, r4, r6\n" - " ldr r2, [r4]\n" - " sub r2, r2, r1\n" - " ldr r0, [sp, #0x4]\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x1\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._421:\n" - " cmp r7, #0x4\n" - " beq ._422 @cond_branch\n" - " cmp r7, #0\n" - " bne ._423 @cond_branch\n" - "._422:\n" - " mov r0, r8\n" - " mov r1, r9\n" - " bl sub_80451A0\n" - "._423:\n" - " cmp r7, #0x9\n" - " beq ._424 @cond_branch\n" - " cmp r7, #0\n" - " bne ._425 @cond_branch\n" - "._424:\n" - " mov r0, r8\n" - " bl draw_status_ailment_maybe\n" - "._425:\n" - " cmp r7, #0xa\n" - " bne ._426 @cond_branch\n" - " mov r0, r8\n" - " bl sub_80458B0\n" - "._426:\n" - " add r0, r7, #0\n" - " sub r0, r0, #0xa\n" - " lsl r0, r0, #0x18\n" - " lsr r0, r0, #0x18\n" - " cmp r0, #0x1\n" - " bhi ._442 @cond_branch\n" - " mov r0, r8\n" - " bl sub_8045998\n" - " b ._442\n" - "._430:\n" - " .align 2, 0\n" - "._429:\n" - " .word gSprites\n" - " .word gExperienceTables\n" - " .word gBaseStats\n" - "._411:\n" - " cmp r7, #0x3\n" - " beq ._431 @cond_branch\n" - " cmp r7, #0\n" - " bne ._432 @cond_branch\n" - "._431:\n" - " mov r0, r9\n" - " mov r1, #0x38\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x18\n" - " lsr r1, r1, #0x18\n" - " mov r0, r8\n" - " bl sub_8043FC0\n" - "._432:\n" - " ldr r0, ._443\n" - " ldrb r0, [r0]\n" - " cmp r0, #0x1\n" - " bne ._436 @cond_branch\n" - " cmp r7, #0x1\n" - " bhi ._434 @cond_branch\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x0\n" - " bl sub_80440EC\n" - "._434:\n" - " cmp r7, #0x2\n" - " beq ._435 @cond_branch\n" - " cmp r7, #0\n" - " bne ._436 @cond_branch\n" - "._435:\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r1, r0, #0\n" - " lsl r1, r1, #0x10\n" - " asr r1, r1, #0x10\n" - " mov r0, r8\n" - " mov r2, #0x1\n" - " bl sub_80440EC\n" - "._436:\n" - " cmp r7, #0x5\n" - " beq ._437 @cond_branch\n" - " cmp r7, #0\n" - " bne ._438 @cond_branch\n" - "._437:\n" - " mov r0, #0x0\n" - " bl load_gfxc_health_bar\n" - " mov r0, r9\n" - " mov r1, #0x3a\n" - " bl GetMonData\n" - " add r4, r0, #0\n" - " mov r0, r9\n" - " mov r1, #0x39\n" - " bl GetMonData\n" - " add r3, r0, #0\n" - " mov r0, #0x0\n" - " str r0, [sp]\n" - " mov r0, sl\n" - " mov r1, r8\n" - " add r2, r4, #0\n" - " bl sub_8043D84\n" - " mov r0, sl\n" - " mov r1, r8\n" - " mov r2, #0x0\n" - " mov r3, #0x0\n" - " bl sub_8045C78\n" - "._438:\n" - " cmp r7, #0x4\n" - " beq ._439 @cond_branch\n" - " cmp r7, #0\n" - " bne ._440 @cond_branch\n" - "._439:\n" - " mov r0, r8\n" - " mov r1, r9\n" - " bl sub_80451A0\n" - "._440:\n" - " cmp r7, #0x9\n" - " beq ._441 @cond_branch\n" - " cmp r7, #0\n" - " bne ._442 @cond_branch\n" - "._441:\n" - " mov r0, r8\n" - " bl draw_status_ailment_maybe\n" - "._442:\n" - " add sp, sp, #0x8\n" - " pop {r3, r4, r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov sl, r5\n" - " pop {r4, r5, r6, r7}\n" - " pop {r0}\n" - " bx r0\n" - "._444:\n" - " .align 2, 0\n" - "._443:\n" - " .word gUnknown_020297ED\n" - "\n" - ); -} -#else void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { u8 r10; @@ -3404,6 +2758,15 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) { if (c == 3 || c == 0) sub_8043FC0(a, GetMonData(pkmn, MON_DATA_LEVEL)); +#if DEBUG + if (gUnknown_020297ED == 1) + { + if (c == 1 || c == 0) + sub_80440EC(a, GetMonData(pkmn, MON_DATA_HP), 0); + if (c == 2 || c == 0) + sub_80440EC(a, GetMonData(pkmn, MON_DATA_MAX_HP), 1); + } +#endif if (c == 5 || c == 0) { load_gfxc_health_bar(0); @@ -3418,7 +2781,6 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c) draw_status_ailment_maybe(a); } } -#endif s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) { -- cgit v1.2.3