diff options
-rwxr-xr-x | asm/aurora.s | 218 | ||||
-rwxr-xr-x | asm/devil.s | 163 | ||||
-rwxr-xr-x | asm/struggle.s | 111 | ||||
-rwxr-xr-x | asm/swipe.s | 50 | ||||
-rwxr-xr-x | asm/uproar.s | 64 | ||||
-rw-r--r-- | include/map_object_constants.h | 239 | ||||
-rw-r--r-- | include/rom_8077ABC.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 10 | ||||
-rw-r--r-- | src/battle/anim/aurora.c | 72 | ||||
-rw-r--r-- | src/battle/anim/devil.c | 37 | ||||
-rw-r--r-- | src/battle/anim/struggle.c | 52 | ||||
-rw-r--r-- | src/battle/anim/swipe.c | 20 | ||||
-rw-r--r-- | src/battle/anim/uproar.c | 25 | ||||
-rw-r--r-- | src/rom_8077ABC.c | 4 | ||||
-rw-r--r-- | tools/gbagfx/convert_png.c | 48 |
15 files changed, 260 insertions, 857 deletions
diff --git a/asm/aurora.s b/asm/aurora.s deleted file mode 100755 index e5de7c419..000000000 --- a/asm/aurora.s +++ /dev/null @@ -1,218 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - @ aurora - - thumb_func_start sub_80D33B4 -sub_80D33B4: @ 80D33B4 - push {r4-r7,lr} - adds r5, r0, 0 - movs r1, 0x1 - bl sub_80787B0 - ldr r0, _080D33DC @ =gBattleAnimBankAttacker - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - beq _080D33E4 - ldr r1, _080D33E0 @ =gBattleAnimArgs - ldrh r0, [r1, 0x4] - negs r0, r0 - lsls r0, 16 - lsrs r6, r0, 16 - adds r7, r1, 0 - b _080D33EA - .align 2, 0 -_080D33DC: .4byte gBattleAnimBankAttacker -_080D33E0: .4byte gBattleAnimArgs -_080D33E4: - ldr r0, _080D3440 @ =gBattleAnimArgs - ldrh r6, [r0, 0x4] - adds r7, r0, 0 -_080D33EA: - ldrh r0, [r7, 0x8] - strh r0, [r5, 0x2E] - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x30] - ldr r4, _080D3444 @ =gBattleAnimBankTarget - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - adds r0, r6 - strh r0, [r5, 0x32] - ldrh r0, [r5, 0x22] - strh r0, [r5, 0x34] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - ldrh r7, [r7, 0x6] - adds r0, r7 - strh r0, [r5, 0x36] - adds r0, r5, 0 - bl obj_translate_based_on_private_1_2_3_4 - ldr r0, _080D3448 @ =sub_80D344C - str r0, [r5, 0x1C] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldr r1, [r5, 0x1C] - adds r0, r5, 0 - bl _call_via_r1 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D3440: .4byte gBattleAnimArgs -_080D3444: .4byte gBattleAnimBankTarget -_080D3448: .4byte sub_80D344C - thumb_func_end sub_80D33B4 - - thumb_func_start sub_80D344C -sub_80D344C: @ 80D344C - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080D3488 @ =gBattleAnimArgs - ldrh r1, [r0, 0xE] - ldr r0, _080D348C @ =0x0000ffff - cmp r1, r0 - bne _080D346E - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] -_080D346E: - adds r0, r4, 0 - bl sub_8078B5C - lsls r0, 24 - cmp r0, 0 - beq _080D3480 - adds r0, r4, 0 - bl move_anim_8072740 -_080D3480: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D3488: .4byte gBattleAnimArgs -_080D348C: .4byte 0x0000ffff - thumb_func_end sub_80D344C - - thumb_func_start sub_80D3490 -sub_80D3490: @ 80D3490 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080D34C4 @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldr r0, _080D34C8 @ =gBattleAnimArgs - ldrh r0, [r0] - strh r0, [r4, 0x8] - ldr r0, _080D34CC @ =0x0000279c - bl IndexOfSpritePaletteTag - lsls r0, 24 - lsrs r0, 20 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1 - strh r0, [r4, 0xC] - ldr r0, _080D34D0 @ =sub_80D34D4 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D34C4: .4byte gTasks -_080D34C8: .4byte gBattleAnimArgs -_080D34CC: .4byte 0x0000279c -_080D34D0: .4byte sub_80D34D4 - thumb_func_end sub_80D3490 - - thumb_func_start sub_80D34D4 -sub_80D34D4: @ 80D34D4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080D354C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - ldrh r0, [r2, 0x1C] - adds r0, 0x1 - strh r0, [r2, 0x1C] - lsls r0, 16 - asrs r0, 16 - mov r12, r1 - cmp r0, 0x3 - bne _080D3526 - movs r0, 0 - strh r0, [r2, 0x1C] - ldrh r0, [r2, 0xC] - adds r0, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, _080D3550 @ =gPlttBufferFaded - lsls r0, r5, 1 - adds r0, r1 - ldrh r6, [r0] - adds r7, r1, 0 - adds r3, r0, 0x2 - movs r1, 0x6 - adds r2, r0, 0 -_080D3510: - ldrh r0, [r3] - strh r0, [r2] - adds r3, 0x2 - adds r2, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _080D3510 - adds r0, r5, 0x7 - lsls r0, 1 - adds r0, r7 - strh r6, [r0] -_080D3526: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - add r0, r12 - ldrh r1, [r0, 0x1E] - adds r1, 0x1 - strh r1, [r0, 0x1E] - lsls r1, 16 - asrs r1, 16 - movs r2, 0x8 - ldrsh r0, [r0, r2] - cmp r1, r0 - bne _080D3546 - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D3546: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080D354C: .4byte gTasks -_080D3550: .4byte gPlttBufferFaded - thumb_func_end sub_80D34D4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/devil.s b/asm/devil.s deleted file mode 100755 index ae552f231..000000000 --- a/asm/devil.s +++ /dev/null @@ -1,163 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2ABC -sub_80D2ABC: @ 80D2ABC - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2AF6 - ldr r1, _080D2BB8 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - ldr r0, _080D2BBC @ =gBattleAnimBankTarget - ldrb r0, [r0] - bl sub_8079E90 - subs r0, 0x1 - adds r1, r4, 0 - adds r1, 0x43 - strb r0, [r1] - movs r0, 0x1 - strh r0, [r4, 0x32] -_080D2AF6: - ldrh r0, [r4, 0x32] - ldrh r2, [r4, 0x2E] - adds r0, r2 - strh r0, [r4, 0x2E] - movs r1, 0x2E - ldrsh r0, [r4, r1] - lsls r1, r0, 2 - adds r0, r1, 0 - cmp r1, 0 - bge _080D2B0C - adds r0, 0xFF -_080D2B0C: - asrs r0, 8 - lsls r0, 8 - subs r0, r1, r0 - strh r0, [r4, 0x30] - lsls r0, 16 - cmp r0, 0 - bge _080D2B1E - movs r0, 0 - strh r0, [r4, 0x30] -_080D2B1E: - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080D2B2C - adds r0, 0x3 -_080D2B2C: - asrs r0, 2 - movs r1, 0x1E - subs r1, r0 - adds r0, r2, 0 - bl Cos - strh r0, [r4, 0x24] - movs r0, 0x30 - ldrsh r2, [r4, r0] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _080D2B48 - adds r0, 0x7 -_080D2B48: - asrs r0, 3 - movs r1, 0xA - subs r1, r0 - adds r0, r2, 0 - bl Sin - strh r0, [r4, 0x26] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0x80 - ble _080D2B6C - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _080D2B6C - ldr r0, _080D2BC0 @ =0x0000ffff - strh r0, [r4, 0x32] -_080D2B6C: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2B80 - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _080D2B80 - movs r0, 0x1 - strh r0, [r4, 0x32] -_080D2B80: - ldrh r0, [r4, 0x34] - adds r1, r0, 0x1 - strh r1, [r4, 0x34] - subs r0, 0x9 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x46 - bls _080D2BC4 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsrs r0, r1, 31 - adds r0, r1, r0 - asrs r0, 1 - lsls r0, 1 - subs r1, r0 - adds r3, r4, 0 - adds r3, 0x3E - movs r0, 0x1 - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - b _080D2BD2 - .align 2, 0 -_080D2BB8: .4byte gBattleAnimArgs -_080D2BBC: .4byte gBattleAnimBankTarget -_080D2BC0: .4byte 0x0000ffff -_080D2BC4: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080D2BD2: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x5A - ble _080D2BE0 - adds r0, r4, 0 - bl move_anim_8072740 -_080D2BE0: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D2ABC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/struggle.s b/asm/struggle.s deleted file mode 100755 index 2d618ed8f..000000000 --- a/asm/struggle.s +++ /dev/null @@ -1,111 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2C38 -sub_80D2C38: @ 80D2C38 - push {r4,r5,lr} - adds r5, r0, 0 - ldr r1, _080D2C50 @ =gBattleAnimArgs - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D2C54 - adds r0, r5, 0 - bl move_anim_8072740 - b _080D2CB8 - .align 2, 0 -_080D2C50: .4byte gBattleAnimArgs -_080D2C54: - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080D2C64 - ldr r4, _080D2C60 @ =gBattleAnimBankAttacker - b _080D2C66 - .align 2, 0 -_080D2C60: .4byte gBattleAnimBankAttacker -_080D2C64: - ldr r4, _080D2C94 @ =gBattleAnimBankTarget -_080D2C66: - ldrb r0, [r4] - movs r1, 0x2 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x20] - ldrb r0, [r4] - movs r1, 0x3 - bl sub_8077ABC - lsls r0, 24 - lsrs r0, 24 - strh r0, [r5, 0x22] - ldr r0, _080D2C98 @ =gBattleAnimArgs - movs r2, 0x2 - ldrsh r1, [r0, r2] - adds r2, r0, 0 - cmp r1, 0 - bne _080D2C9C - ldrh r0, [r5, 0x20] - adds r0, 0x20 - b _080D2CA0 - .align 2, 0 -_080D2C94: .4byte gBattleAnimBankTarget -_080D2C98: .4byte gBattleAnimArgs -_080D2C9C: - ldrh r0, [r5, 0x20] - subs r0, 0x20 -_080D2CA0: - strh r0, [r5, 0x20] - ldrh r0, [r2, 0x4] - strh r0, [r5, 0x2E] - ldrh r1, [r2, 0x2] - strh r1, [r5, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - ldr r0, _080D2CC0 @ =sub_80D2CC4 - str r0, [r5, 0x1C] -_080D2CB8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2CC0: .4byte sub_80D2CC4 - thumb_func_end sub_80D2C38 - - thumb_func_start sub_80D2CC4 -sub_80D2CC4: @ 80D2CC4 - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D2CF4 - ldrh r0, [r2, 0x2E] - subs r0, 0x1 - strh r0, [r2, 0x2E] - lsls r0, 16 - cmp r0, 0 - beq _080D2CEE - ldrh r1, [r2, 0x30] - lsls r1, 24 - lsrs r1, 24 - adds r0, r2, 0 - bl StartSpriteAnim - b _080D2CF4 -_080D2CEE: - adds r0, r2, 0 - bl move_anim_8072740 -_080D2CF4: - pop {r0} - bx r0 - thumb_func_end sub_80D2CC4 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/swipe.s b/asm/swipe.s deleted file mode 100755 index 7f5284d7c..000000000 --- a/asm/swipe.s +++ /dev/null @@ -1,50 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2BE8 -sub_80D2BE8: @ 80D2BE8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080D2C1C - ldr r1, _080D2C18 @ =gBattleAnimArgs - ldrh r0, [r1] - ldrh r2, [r4, 0x20] - adds r0, r2 - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x2] - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - ldrb r1, [r1, 0x4] - adds r0, r4, 0 - bl StartSpriteAnim - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080D2C30 - .align 2, 0 -_080D2C18: .4byte gBattleAnimArgs -_080D2C1C: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080D2C30 - adds r0, r4, 0 - bl move_anim_8072740 -_080D2C30: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80D2BE8 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/uproar.s b/asm/uproar.s deleted file mode 100755 index 04f428d4e..000000000 --- a/asm/uproar.s +++ /dev/null @@ -1,64 +0,0 @@ - .include "constants/gba_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80D2CF8 -sub_80D2CF8: @ 80D2CF8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _080D2D2C @ =gBattleAnimArgs - ldrb r0, [r0] - bl GetAnimBankSpriteId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - ldr r0, _080D2D30 @ =gTasks - adds r4, r0 - ldr r2, _080D2D34 @ =gUnknown_083D7CA8 - adds r0, r4, 0 - bl sub_80798F4 - ldr r0, _080D2D38 @ =sub_80D2D3C - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080D2D2C: .4byte gBattleAnimArgs -_080D2D30: .4byte gTasks -_080D2D34: .4byte gUnknown_083D7CA8 -_080D2D38: .4byte sub_80D2D3C - thumb_func_end sub_80D2CF8 - - thumb_func_start sub_80D2D3C -sub_80D2D3C: @ 80D2D3C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080D2D64 @ =gTasks - adds r0, r1 - bl sub_807992C - lsls r0, 24 - cmp r0, 0 - bne _080D2D5C - adds r0, r4, 0 - bl DestroyAnimVisualTask -_080D2D5C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080D2D64: .4byte gTasks - thumb_func_end sub_80D2D3C - - .align 2, 0 @ Don't pad with nop. diff --git a/include/map_object_constants.h b/include/map_object_constants.h deleted file mode 100644 index 79482b54a..000000000 --- a/include/map_object_constants.h +++ /dev/null @@ -1,239 +0,0 @@ -#ifndef GUARD_MAP_OBJECT_CONSTANTS_H -#define GUARD_MAP_OBJECT_CONSTANTS_H - -enum -{ - MAP_OBJ_GFX_BRENDAN_NORMAL, - MAP_OBJ_GFX_BRENDAN_MACH_BIKE, - MAP_OBJ_GFX_BRENDAN_SURFING, - MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, - MAP_OBJ_GFX_QUINTY_PLUMP, - MAP_OBJ_GFX_LITTLE_BOY_1, - MAP_OBJ_GFX_LITTLE_GIRL_1, - MAP_OBJ_GFX_BOY_1, - MAP_OBJ_GFX_GIRL_1, - MAP_OBJ_GFX_BOY_2, - MAP_OBJ_GFX_GIRL_2, - MAP_OBJ_GFX_LITTLE_BOY_2, - MAP_OBJ_GFX_LITTLE_GIRL_2, - MAP_OBJ_GFX_BOY_3, - MAP_OBJ_GFX_GIRL_3, - MAP_OBJ_GFX_BOY_4, - MAP_OBJ_GFX_WOMAN_1, - MAP_OBJ_GFX_FAT_MAN, - MAP_OBJ_GFX_WOMAN_2, - MAP_OBJ_GFX_MAN_1, - MAP_OBJ_GFX_WOMAN_3, - MAP_OBJ_GFX_OLD_MAN_1, - MAP_OBJ_GFX_OLD_WOMAN_1, - MAP_OBJ_GFX_MAN_2, - MAP_OBJ_GFX_WOMAN_4, - MAP_OBJ_GFX_MAN_3, - MAP_OBJ_GFX_WOMAN_5, - MAP_OBJ_GFX_COOK, - MAP_OBJ_GFX_WOMAN_6, - MAP_OBJ_GFX_OLD_MAN_2, - MAP_OBJ_GFX_OLD_WOMAN_2, - MAP_OBJ_GFX_CAMPER, - MAP_OBJ_GFX_PICNICKER, - MAP_OBJ_GFX_MAN_4, - MAP_OBJ_GFX_WOMAN_7, - MAP_OBJ_GFX_YOUNGSTER, - MAP_OBJ_GFX_BUG_CATCHER, - MAP_OBJ_GFX_PSYCHIC_M, - MAP_OBJ_GFX_SCHOOL_KID_M, - MAP_OBJ_GFX_MANIAC, - MAP_OBJ_GFX_HEX_MANIAC, - MAP_OBJ_GFX_WOMAN_8, - MAP_OBJ_GFX_SWIMMER_M, - MAP_OBJ_GFX_SWIMMER_F, - MAP_OBJ_GFX_BLACK_BELT, - MAP_OBJ_GFX_BEAUTY, - MAP_OBJ_GFX_SCIENTIST_1, - MAP_OBJ_GFX_LASS, - MAP_OBJ_GFX_GENTLEMAN, - MAP_OBJ_GFX_SAILOR, - MAP_OBJ_GFX_FISHERMAN, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, - MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, - MAP_OBJ_GFX_TUBER_F, - MAP_OBJ_GFX_TUBER_M, - MAP_OBJ_GFX_HIKER, - MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, - MAP_OBJ_GFX_CYCLING_TRIATHLETE_F, - MAP_OBJ_GFX_NURSE, - MAP_OBJ_GFX_ITEM_BALL, - MAP_OBJ_GFX_BERRY_TREE, - MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, - MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES, - MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, - MAP_OBJ_GFX_PROF_BIRCH, - MAP_OBJ_GFX_MAN_5, - MAP_OBJ_GFX_MAN_6, - MAP_OBJ_GFX_REPORTER_M, - MAP_OBJ_GFX_REPORTER_F, - MAP_OBJ_GFX_BARD, - MAP_OBJ_GFX_HIPSTER, - MAP_OBJ_GFX_TRADER, - MAP_OBJ_GFX_STORYTELLER, - MAP_OBJ_GFX_GIDDY, - MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1, - MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2, - MAP_OBJ_GFX_UNUSED_NATU_DOLL, - MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL, - MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL, - MAP_OBJ_GFX_UNUSED_WOOPER_DOLL, - MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL, - MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL, - MAP_OBJ_GFX_CUTTABLE_TREE, - MAP_OBJ_GFX_MART_EMPLOYEE, - MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN, - MAP_OBJ_GFX_TEALA, - MAP_OBJ_GFX_BREAKABLE_ROCK, - MAP_OBJ_GFX_PUSHABLE_BOULDER, - MAP_OBJ_GFX_MR_BRINEYS_BOAT, - MAP_OBJ_GFX_MAY_NORMAL, - MAP_OBJ_GFX_MAY_MACH_BIKE, - MAP_OBJ_GFX_MAY_ACRO_BIKE, - MAP_OBJ_GFX_MAY_SURFING, - MAP_OBJ_GFX_MAY_FIELD_MOVE, - MAP_OBJ_GFX_TRUCK, - MAP_OBJ_GFX_MACHOKE_CARRYING_BOX, - MAP_OBJ_GFX_MACHOKE_FACING_AWAY, - MAP_OBJ_GFX_BIRCHS_BAG, - MAP_OBJ_GFX_POOCHYENA, - MAP_OBJ_GFX_ARTIST, - MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, - MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, - MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, - MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, - MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, - MAP_OBJ_GFX_RIVAL_MAY_NORMAL, - MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE, - MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE, - MAP_OBJ_GFX_RIVAL_MAY_SURFING, - MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE, - MAP_OBJ_GFX_CAMERAMAN, - MAP_OBJ_GFX_BRENDAN_UNDERWATER, - MAP_OBJ_GFX_MAY_UNDERWATER, - MAP_OBJ_GFX_MOVING_BOX, - MAP_OBJ_GFX_CABLE_CAR, - MAP_OBJ_GFX_SCIENTIST_2, - MAP_OBJ_GFX_MAN_7, - MAP_OBJ_GFX_AQUA_MEMBER_M, - MAP_OBJ_GFX_AQUA_MEMBER_F, - MAP_OBJ_GFX_MAGMA_MEMBER_M, - MAP_OBJ_GFX_MAGMA_MEMBER_F, - MAP_OBJ_GFX_SIDNEY, - MAP_OBJ_GFX_PHOEBE, - MAP_OBJ_GFX_GLACIA, - MAP_OBJ_GFX_DRAKE, - MAP_OBJ_GFX_ROXANNE, - MAP_OBJ_GFX_BRAWLY, - MAP_OBJ_GFX_WATTSON, - MAP_OBJ_GFX_FLANNERY, - MAP_OBJ_GFX_NORMAN, - MAP_OBJ_GFX_WINONA, - MAP_OBJ_GFX_LIZA, - MAP_OBJ_GFX_TATE, - MAP_OBJ_GFX_WALLACE, - MAP_OBJ_GFX_STEVEN, - MAP_OBJ_GFX_WALLY, - MAP_OBJ_GFX_LITTLE_BOY_3, - MAP_OBJ_GFX_BRENDAN_FISHING, - MAP_OBJ_GFX_MAY_FISHING, - MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN, - MAP_OBJ_GFX_SS_TIDAL, - MAP_OBJ_GFX_SUBMARINE_SHADOW, - MAP_OBJ_GFX_PICHU_DOLL, - MAP_OBJ_GFX_PIKACHU_DOLL, - MAP_OBJ_GFX_MARILL_DOLL, - MAP_OBJ_GFX_TOGEPI_DOLL, - MAP_OBJ_GFX_CYNDAQUIL_DOLL, - MAP_OBJ_GFX_CHIKORITA_DOLL, - MAP_OBJ_GFX_TOTODILE_DOLL, - MAP_OBJ_GFX_JIGGLYPUFF_DOLL, - MAP_OBJ_GFX_MEOWTH_DOLL, - MAP_OBJ_GFX_CLEFAIRY_DOLL, - MAP_OBJ_GFX_DITTO_DOLL, - MAP_OBJ_GFX_SMOOCHUM_DOLL, - MAP_OBJ_GFX_TREECKO_DOLL, - MAP_OBJ_GFX_TORCHIC_DOLL, - MAP_OBJ_GFX_MUDKIP_DOLL, - MAP_OBJ_GFX_DUSKULL_DOLL, - MAP_OBJ_GFX_WYNAUT_DOLL, - MAP_OBJ_GFX_BALTOY_DOLL, - MAP_OBJ_GFX_KECLEON_DOLL, - MAP_OBJ_GFX_AZURILL_DOLL, - MAP_OBJ_GFX_SKITTY_DOLL, - MAP_OBJ_GFX_SWABLU_DOLL, - MAP_OBJ_GFX_GULPIN_DOLL, - MAP_OBJ_GFX_LOTAD_DOLL, - MAP_OBJ_GFX_SEEDOT_DOLL, - MAP_OBJ_GFX_PIKA_CUSHION, - MAP_OBJ_GFX_ROUND_CUSHION, - MAP_OBJ_GFX_KISS_CUSHION, - MAP_OBJ_GFX_ZIGZAG_CUSHION, - MAP_OBJ_GFX_SPIN_CUSHION, - MAP_OBJ_GFX_DIAMOND_CUSHION, - MAP_OBJ_GFX_BALL_CUSHION, - MAP_OBJ_GFX_GRASS_CUSHION, - MAP_OBJ_GFX_FIRE_CUSHION, - MAP_OBJ_GFX_WATER_CUSHION, - MAP_OBJ_GFX_BIG_SNORLAX_DOLL, - MAP_OBJ_GFX_BIG_RHYDON_DOLL, - MAP_OBJ_GFX_BIG_LAPRAS_DOLL, - MAP_OBJ_GFX_BIG_VENUSAUR_DOLL, - MAP_OBJ_GFX_BIG_CHARIZARD_DOLL, - MAP_OBJ_GFX_BIG_BLASTOISE_DOLL, - MAP_OBJ_GFX_BIG_WAILMER_DOLL, - MAP_OBJ_GFX_BIG_REGIROCK_DOLL, - MAP_OBJ_GFX_BIG_REGICE_DOLL, - MAP_OBJ_GFX_BIG_REGISTEEL_DOLL, - MAP_OBJ_GFX_LATIAS, - MAP_OBJ_GFX_LATIOS, - MAP_OBJ_GFX_BOY_5, - MAP_OBJ_GFX_CONTEST_JUDGE, - MAP_OBJ_GFX_BRENDAN_WATERING, - MAP_OBJ_GFX_MAY_WATERING, - MAP_OBJ_GFX_BRENDAN_DECORATING, - MAP_OBJ_GFX_MAY_DECORATING, - MAP_OBJ_GFX_ARCHIE, - MAP_OBJ_GFX_MAXIE, - MAP_OBJ_GFX_KYOGRE_1, - MAP_OBJ_GFX_GROUDON_1, - MAP_OBJ_GFX_FOSSIL, - MAP_OBJ_GFX_REGIROCK, - MAP_OBJ_GFX_REGICE, - MAP_OBJ_GFX_REGISTEEL, - MAP_OBJ_GFX_SKITTY, - MAP_OBJ_GFX_KECLEON_1, - MAP_OBJ_GFX_KYOGRE_2, - MAP_OBJ_GFX_GROUDON_2, - MAP_OBJ_GFX_RAYQUAZA, - MAP_OBJ_GFX_ZIGZAGOON, - MAP_OBJ_GFX_PIKACHU, - MAP_OBJ_GFX_AZUMARILL, - MAP_OBJ_GFX_WINGULL, - MAP_OBJ_GFX_KECLEON_2, - MAP_OBJ_GFX_TUBER_M_SWIMMING, - MAP_OBJ_GFX_AZURILL, - MAP_OBJ_GFX_MOM, - MAP_OBJ_GFX_LINK_BRENDAN, - MAP_OBJ_GFX_LINK_MAY, -}; - -enum { - SHADOW_SIZE_S, - SHADOW_SIZE_M, - SHADOW_SIZE_L, - SHADOW_SIZE_XL -}; - -enum { - TRACKS_NONE, - TRACKS_FOOT, - TRACKS_BIKE_TIRE -}; - -#endif // GUARD_MAP_OBJECT_CONSTANTS_H diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h index cd89c92a2..2a2947968 100644 --- a/include/rom_8077ABC.h +++ b/include/rom_8077ABC.h @@ -54,7 +54,7 @@ void sub_80797EC(struct Task *task); void sub_8079814(u8 taskId); void sub_8079A64(u8 sprite); u16 sub_8079B10(u8 sprite); -void sub_8079BF4(s16 *bottom, s16 *top, void *ptr); +void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr); void *sub_8079BFC(s16 bottom, s16 top); void sub_8079E24(); u8 sub_8079E90(u8 slot); @@ -93,7 +93,7 @@ u32 sub_80792C0(u8 a1, u8 a2, u8 a3, u8 a4); s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8 a1); void obj_delete_but_dont_free_vram(struct Sprite *sprite); void sub_8079108(u16 a1, bool8 a2); -void sub_80798F4(struct Task *task, u8 a2, void *a3); +void sub_80798F4(struct Task *task, u8 a2, const void *a3); bool8 sub_807992C(struct Task *task); u8 sub_8077FC0(u8 slot); void move_anim_8074EE0(struct Sprite *sprite); diff --git a/ld_script.txt b/ld_script.txt index 6664a6f8d..6353fceec 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -264,17 +264,17 @@ SECTIONS { src/battle/anim/perceive.o(.text); src/battle/anim/angel.o(.text); src/battle/anim/angel_kiss.o(.text); - asm/devil.o(.text); - asm/swipe.o(.text); - asm/struggle.o(.text); - asm/uproar.o(.text); + src/battle/anim/devil.o(.text); + src/battle/anim/swipe.o(.text); + src/battle/anim/struggle.o(.text); + src/battle/anim/uproar.o(.text); asm/noise.o(.text); asm/note_spin.o(.text); asm/guard.o(.text); asm/fury_cutter_count.o(.text); asm/rain.o(.text); asm/bubble.o(.text); - asm/aurora.o(.text); + src/battle/anim/aurora.o(.text); asm/liquid_ball.o(.text); asm/water.o(.text); asm/fire.o(.text); diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c new file mode 100644 index 000000000..1ca5e649f --- /dev/null +++ b/src/battle/anim/aurora.c @@ -0,0 +1,72 @@ +#include "global.h" +#include "battle_anim.h" +#include "palette.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D344C(struct Sprite *); +static void sub_80D34D4(u8); + +void sub_80D33B4(struct Sprite *sprite) +{ + s16 r6; + + sub_80787B0(sprite, 1); + if (GetBankSide(gBattleAnimBankAttacker) != 0) + r6 = -gBattleAnimArgs[2]; + else + r6 = gBattleAnimArgs[2]; + sprite->data[0] = gBattleAnimArgs[4]; + sprite->data[1] = sprite->pos1.x; + sprite->data[2] = sub_8077ABC(gBattleAnimBankTarget, 2) + r6; + sprite->data[3] = sprite->pos1.y; + sprite->data[4] = sub_8077ABC(gBattleAnimBankTarget, 3) + gBattleAnimArgs[3]; + obj_translate_based_on_private_1_2_3_4(sprite); + sprite->callback = sub_80D344C; + sprite->affineAnimPaused = TRUE; + sprite->callback(sprite); +} + +static void sub_80D344C(struct Sprite *sprite) +{ + if ((u16)gBattleAnimArgs[7] == 0xFFFF) + { + StartSpriteAnim(sprite, 1); + sprite->affineAnimPaused = FALSE; + } + if (sub_8078B5C(sprite) != 0) + move_anim_8072740(sprite); +} + +void sub_80D3490(u8 taskId) +{ + gTasks[taskId].data[0] = gBattleAnimArgs[0]; + gTasks[taskId].data[2] = 0x100 + IndexOfSpritePaletteTag(0x279C) * 16; + gTasks[taskId].func = sub_80D34D4; +} + +static void sub_80D34D4(u8 taskId) +{ + gTasks[taskId].data[10]++; + if (gTasks[taskId].data[10] == 3) + { + u16 r5; + u16 r6; + s32 i; + + gTasks[taskId].data[10] = 0; + r5 = gTasks[taskId].data[2] + 1; + r6 = gPlttBufferFaded[r5]; + for (i = 1; i < 8; i++) + gPlttBufferFaded[r5 + i - 1] = gPlttBufferFaded[r5 + i]; + gPlttBufferFaded[r5 + 7] = r6; + } + gTasks[taskId].data[11]++; + if (gTasks[taskId].data[11] == gTasks[taskId].data[0]) + DestroyAnimVisualTask(taskId); +} diff --git a/src/battle/anim/devil.c b/src/battle/anim/devil.c new file mode 100644 index 000000000..345ee53ea --- /dev/null +++ b/src/battle/anim/devil.c @@ -0,0 +1,37 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "trig.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankTarget; + +void sub_80D2ABC(struct Sprite *sprite) +{ + if (sprite->data[3] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, 0); + sprite->subpriority = sub_8079E90(gBattleAnimBankTarget) - 1; + sprite->data[2] = 1; + } + sprite->data[0] += sprite->data[2]; + sprite->data[1] = (sprite->data[0] * 4) % 256; + if (sprite->data[1] < 0) + sprite->data[1] = 0; + sprite->pos2.x = Cos(sprite->data[1], 30 - sprite->data[0] / 4); + sprite->pos2.y = Sin(sprite->data[1], 10 - sprite->data[0] / 8); + if (sprite->data[1] > 128 && sprite->data[2] > 0) + sprite->data[2] = -1; + if (sprite->data[1] == 0 && sprite->data[2] < 0) + sprite->data[2] = 1; + sprite->data[3]++; + if (sprite->data[3] < 10 || sprite->data[3] > 0x50) + sprite->invisible = sprite->data[0] % 2; + else + sprite->invisible = FALSE; + if (sprite->data[3] > 0x5A) + move_anim_8072740(sprite); +} diff --git a/src/battle/anim/struggle.c b/src/battle/anim/struggle.c new file mode 100644 index 000000000..63a01a79e --- /dev/null +++ b/src/battle/anim/struggle.c @@ -0,0 +1,52 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "sprite.h" + +extern s16 gBattleAnimArgs[8]; +extern u8 gBattleAnimBankAttacker; +extern u8 gBattleAnimBankTarget; + +static void sub_80D2CC4(struct Sprite *); + +void sub_80D2C38(struct Sprite *sprite) +{ + if (gBattleAnimArgs[2] == 0) + { + move_anim_8072740(sprite); + } + else + { + if (gBattleAnimArgs[0] == 0) + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankAttacker, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankAttacker, 3); + } + else + { + sprite->pos1.x = sub_8077ABC(gBattleAnimBankTarget, 2); + sprite->pos1.y = sub_8077ABC(gBattleAnimBankTarget, 3); + } + + if (gBattleAnimArgs[1] == 0) + sprite->pos1.x += 32; + else + sprite->pos1.x -= 32; + + sprite->data[0] = gBattleAnimArgs[2]; + sprite->data[1] = gBattleAnimArgs[1]; + StartSpriteAnim(sprite, sprite->data[1]); + sprite->callback = sub_80D2CC4; + } +} + +static void sub_80D2CC4(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + if (--sprite->data[0] != 0) + StartSpriteAnim(sprite, sprite->data[1]); + else + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/swipe.c b/src/battle/anim/swipe.c new file mode 100644 index 000000000..15bee06ee --- /dev/null +++ b/src/battle/anim/swipe.c @@ -0,0 +1,20 @@ +#include "global.h" +#include "battle_anim.h" +#include "sprite.h" + +extern s16 gBattleAnimArgs[8]; + +void sub_80D2BE8(struct Sprite *sprite) +{ + if (sprite->data[0] == 0) + { + sprite->pos1.x += gBattleAnimArgs[0]; + sprite->pos1.y += gBattleAnimArgs[1]; + StartSpriteAnim(sprite, gBattleAnimArgs[2]); + sprite->data[0]++; + } + else if (sprite->animEnded) + { + move_anim_8072740(sprite); + } +} diff --git a/src/battle/anim/uproar.c b/src/battle/anim/uproar.c new file mode 100644 index 000000000..03cc65bc0 --- /dev/null +++ b/src/battle/anim/uproar.c @@ -0,0 +1,25 @@ +#include "global.h" +#include "battle_anim.h" +#include "rom_8077ABC.h" +#include "sprite.h" +#include "task.h" + +extern s16 gBattleAnimArgs[8]; + +extern const union AffineAnimCmd gUnknown_083D7CA8[]; + +void sub_80D2D3C(u8); + +void sub_80D2CF8(u8 taskId) +{ + u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]); + + sub_80798F4(&gTasks[taskId], spriteId, gUnknown_083D7CA8); + gTasks[taskId].func = sub_80D2D3C; +} + +void sub_80D2D3C(u8 taskId) +{ + if (!sub_807992C(&gTasks[taskId])) + DestroyAnimVisualTask(taskId); +} diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 42f360b69..8fea7f710 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1435,7 +1435,7 @@ void sub_80798AC(u8 task) { sub_80797EC(&gTasks[task]); } -void sub_80798F4(struct Task *task, u8 a2, void *a3) { +void sub_80798F4(struct Task *task, u8 a2, const void *a3) { task->data[7] = 0; task->data[8] = 0; task->data[9] = 0; @@ -1564,7 +1564,7 @@ u16 sub_8079B10(u8 sprite) { return 0x40; } -void sub_8079BF4(s16 *bottom, s16 *top, void *ptr) { +void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr) { *bottom = ((intptr_t) ptr) & 0xffff; *top = (((intptr_t) ptr) >> 16) & 0xffff; } diff --git a/tools/gbagfx/convert_png.c b/tools/gbagfx/convert_png.c index 37904318c..cdfa39a7a 100644 --- a/tools/gbagfx/convert_png.c +++ b/tools/gbagfx/convert_png.c @@ -45,6 +45,40 @@ static FILE *PngReadOpen(char *path, png_structp *pngStruct, png_infop *pngInfo) return fp; } +static unsigned char *ConvertBitDepth(unsigned char *src, int srcBitDepth, int destBitDepth, int numPixels) +{ + // Round the number of bits up to the next 8 and divide by 8 to get the number of bytes. + int srcSize = ((numPixels * srcBitDepth + 7) & ~7) / 8; + int destSize = ((numPixels * destBitDepth + 7) & ~7) / 8; + unsigned char *output = calloc(destSize, 1); + unsigned char *dest = output; + int i; + int j; + int destBit = 8 - destBitDepth; + + for (i = 0; i < srcSize; i++) + { + unsigned char srcByte = src[i]; + + for (j = 8 - srcBitDepth; j >= 0; j -= srcBitDepth) + { + unsigned char pixel = (srcByte >> j) % (1 << srcBitDepth); + + if (pixel >= (1 << destBitDepth)) + FATAL_ERROR("Image exceeds the maximum color value for a %ibpp image.\n", destBitDepth); + *dest |= pixel << destBit; + destBit -= destBitDepth; + if (destBit < 0) + { + dest++; + destBit = 8 - destBitDepth; + } + } + } + + return output; +} + void ReadPng(char *path, struct Image *image) { png_structp png_ptr; @@ -54,9 +88,6 @@ void ReadPng(char *path, struct Image *image) int bit_depth = png_get_bit_depth(png_ptr, info_ptr); - if (bit_depth != image->bitDepth) - FATAL_ERROR("\"%s\" has a bit depth of %d, but the expected bit depth is %d.\n", path, bit_depth, image->bitDepth); - int color_type = png_get_color_type(png_ptr, info_ptr); if (color_type != PNG_COLOR_TYPE_GRAY && color_type != PNG_COLOR_TYPE_PALETTE) @@ -93,6 +124,17 @@ void ReadPng(char *path, struct Image *image) free(row_pointers); fclose(fp); + + if (bit_depth != image->bitDepth) + { + unsigned char *src = image->pixels; + + if (bit_depth != 1 && bit_depth != 2 && bit_depth != 4 && bit_depth != 8) + FATAL_ERROR("Bit depth of image must be 1, 2, 4, or 8.\n"); + image->pixels = ConvertBitDepth(image->pixels, bit_depth, image->bitDepth, image->width * image->height); + free(src); + image->bitDepth = bit_depth; + } } void ReadPngPalette(char *path, struct Palette *palette) |