diff options
-rw-r--r-- | battle/anim_objects.asm | 646 | ||||
-rw-r--r-- | battle/bg_effects.asm | 388 | ||||
-rwxr-xr-x | battle/objects/data.asm | 573 | ||||
-rwxr-xr-x | battle/objects/engine.asm | 314 | ||||
-rwxr-xr-x | battle/objects/library.asm | 130 | ||||
-rwxr-xr-x | battle/trainer_huds.asm | 6 | ||||
-rw-r--r-- | engine/credits.asm | 4 | ||||
-rw-r--r-- | engine/pack.asm | 3 | ||||
-rw-r--r-- | wram.asm | 13 |
9 files changed, 1197 insertions, 880 deletions
diff --git a/battle/anim_objects.asm b/battle/anim_objects.asm index a489de220..bdb5c222c 100644 --- a/battle/anim_objects.asm +++ b/battle/anim_objects.asm @@ -1,649 +1,9 @@ ; Objects used in battle animations. -QueueBattleAnimation: ; cc9a1 (33:49a1) - ld hl, ActiveAnimObjects - ld e, 10 -.loop - ld a, [hl] - and a - jr z, .done - ld bc, BATTLEANIMSTRUCT_LENGTH - add hl, bc - dec e - jr nz, .loop - scf - ret - -.done - ld c, l - ld b, h - ld hl, wNumActiveBattleAnims - inc [hl] - call InitBattleAnimation - ret - -DeinitBattleAnimation: ; cc9bd - ld hl, BATTLEANIMSTRUCT_INDEX - add hl, bc - ld [hl], $0 - ret - -; cc9c4 - -InitBattleAnimation: ; cc9c4 (33:49c4) - ld a, [wBattleAnimTemp0] - ld e, a - ld d, 0 - ld hl, BattleAnimObjects -rept 6 - add hl, de -endr - ld e, l - ld d, h - ld hl, BATTLEANIMSTRUCT_INDEX - add hl, bc - ld a, [wNumActiveBattleAnims] - ld [hli], a ; Index - ld a, [de] - inc de - ld [hli], a ; 01 - ld a, [de] - inc de - ld [hli], a ; 02 - ld a, [de] - inc de - ld [hli], a ; Frameset ID - ld a, [de] - inc de - ld [hli], a ; Function - ld a, [de] - inc de - ld [hli], a ; 05 - ld a, [de] - call GetBattleAnimTileOffset - ld [hli], a ; Tile ID - ld a, [wBattleAnimTemp1] - ld [hli], a ; X Coord - ld a, [wBattleAnimTemp2] - ld [hli], a ; Y Coord - xor a - ld [hli], a ; X Offset - ld [hli], a ; Y Offset - ld a, [wBattleAnimTemp3] - ld [hli], a ; 0b - xor a - ld [hli], a ; 0c - dec a - ld [hli], a ; 0d - xor a - ld [hli], a ; 0e - ld [hli], a ; 0f - ld [hl], a ; 10 - ret - -BattleAnimOAMUpdate: ; cca09 - call InitBattleAnimBuffer - call GetBattleAnimFrame - cp -3 - jp z, .done - cp -4 - jp z, .delete - push af - ld hl, wBattleAnimTempOAMFlags - ld a, [wBattleAnimTemp7] - xor [hl] - and $e0 - ld [hl], a - pop af - push bc - call GetBattleAnimOAMPointer - ld a, [wBattleAnimTempTileID] - add [hl] - ld [wBattleAnimTempTileID], a - inc hl - ld a, [hli] - ld c, a - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [wBattleAnimOAMPointerLo] - ld e, a - ld d, Sprites / $100 -.loop - ld a, [wBattleAnimTempYCoord] - ld b, a - ld a, [wBattleAnimTempYOffset] - add b - ld b, a - push hl - ld a, [hl] - ld hl, wBattleAnimTempOAMFlags - bit 6, [hl] - jr z, .no_yflip - add $8 - xor $ff - inc a - -.no_yflip - pop hl - add b - ld [de], a - inc hl - inc de - ld a, [wBattleAnimTempXCoord] - ld b, a - ld a, [wBattleAnimTempXOffset] - add b - ld b, a - push hl - ld a, [hl] - ld hl, wBattleAnimTempOAMFlags - bit 5, [hl] - jr z, .no_xflip - add $8 - xor $ff - inc a - -.no_xflip - pop hl - add b - ld [de], a - inc hl - inc de - ld a, [wBattleAnimTempTileID] - add $31 - add [hl] - ld [de], a - inc hl - inc de - ld a, [wBattleAnimTempOAMFlags] - ld b, a - ld a, [hl] - xor b - and $e0 - ld b, a - ld a, [hl] - and $10 - or b - ld b, a - ld a, [wBattleAnimTempPalette] - and $f - or b - ld [de], a - inc hl - inc de - ld a, e - ld [wBattleAnimOAMPointerLo], a - cp $a0 - jr nc, .exit_set_carry - dec c - jr nz, .loop - pop bc - jr .done - -.delete - call DeinitBattleAnimation - -.done - and a - ret - -.exit_set_carry - pop bc - scf - ret - -; ccaaa - -InitBattleAnimBuffer: ; ccaaa - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - ld a, [hl] - and %10000000 - ld [wBattleAnimTempOAMFlags], a - xor a - ld [wBattleAnimTemp7], a - ld hl, BATTLEANIMSTRUCT_PALETTE - add hl, bc - ld a, [hl] - ld [wBattleAnimTempPalette], a - ld hl, BATTLEANIMSTRUCT_02 - add hl, bc - ld a, [hl] - ld [wBattleAnimTemp1], a - ld hl, BATTLEANIMSTRUCT_TILEID - add hl, bc - ld a, [hli] - ld [wBattleAnimTempTileID], a - ld a, [hli] - ld [wBattleAnimTempXCoord], a - ld a, [hli] - ld [wBattleAnimTempYCoord], a - ld a, [hli] - ld [wBattleAnimTempXOffset], a - ld a, [hli] - ld [wBattleAnimTempYOffset], a - ld a, [hBattleTurn] - and a - ret z - ld hl, BATTLEANIMSTRUCT_01 - add hl, bc - ld a, [hl] - ld [wBattleAnimTempOAMFlags], a - bit 0, [hl] - ret z - ld hl, BATTLEANIMSTRUCT_XCOORD - add hl, bc - ld a, [hli] - ld d, a - ld a, (-10 * 8) + 4 - sub d - ld [wBattleAnimTempXCoord], a - ld a, [hli] - ld d, a - ld a, [wBattleAnimTemp1] - cp $ff - jr nz, .check_kinesis_softboiled_milkdrink - ld a, 5 * 8 - add d - jr .done - -.check_kinesis_softboiled_milkdrink - sub d - push af - ld a, [FXAnimIDHi] - or a - jr nz, .no_sub - ld a, [FXAnimIDLo] - cp KINESIS - jr z, .kinesis - cp SOFTBOILED - jr z, .softboiled - cp MILK_DRINK - jr nz, .no_sub -.kinesis -.softboiled -.milk_drink - pop af - sub 1 * 8 - jr .done - -.no_sub - pop af -.done - ld [wBattleAnimTempYCoord], a - ld a, [hli] - xor $ff - inc a - ld [wBattleAnimTempXOffset], a - ret - -; ccb31 - -GetBattleAnimTileOffset: ; ccb31 (33:4b31) - push hl - push bc - ld hl, wBattleAnimTileDict - ld b, a - ld c, 10 / 2 -.loop - ld a, [hli] - cp b - jr z, .load - inc hl - dec c - jr nz, .loop - xor a - jr .done - -.load - ld a, [hl] -.done - pop bc - pop hl - ret - -_ExecuteBGEffects: ; ccb48 - callab ExecuteBGEffects - ret - -; ccb4f - -_QueueBGEffect: ; ccb4f (33:4b4f) - callab QueueBGEffect - ret - -; ccb56 (33:4b56) - -BattleAnimObjects: ; ccb56 -battleanimobj: MACRO -; ??, ??, frameset, function, ??, tile offset - db \1, \2, \3, \4, \5, \6 -endm - - battleanimobj $01, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_00 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_01 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_02 - battleanimobj $01, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_03 - battleanimobj $01, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_04 - battleanimobj $01, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_05 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_06 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, $02, $01 ; ANIM_OBJ_07 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_08 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_09 - battleanimobj $01, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, $02, $01 ; ANIM_OBJ_0A - battleanimobj $01, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, $04, $03 ; ANIM_OBJ_0B - battleanimobj $01, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, $04, $03 ; ANIM_OBJ_0C - battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, $04, $03 ; ANIM_OBJ_0D - battleanimobj $01, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, $04, $03 ; ANIM_OBJ_0E - battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, $04, $03 ; ANIM_OBJ_0F - battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, $04, $03 ; ANIM_OBJ_BURNED - battleanimobj $01, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, $06, $0a ; ANIM_OBJ_11 - battleanimobj $01, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, $06, $0a ; ANIM_OBJ_12 - battleanimobj $01, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, $06, $0a ; ANIM_OBJ_13 - battleanimobj $21, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_0B, $05, $06 ; ANIM_OBJ_14 - battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, $04, $0b ; ANIM_OBJ_POKE_BALL - battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, $04, $0b ; ANIM_OBJ_16 - battleanimobj $01, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08 ; ANIM_OBJ_17 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08 ; ANIM_OBJ_18 - battleanimobj $01, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, $02, $0c ; ANIM_OBJ_19 - battleanimobj $01, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, $02, $0c ; ANIM_OBJ_1A - battleanimobj $01, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07 ; ANIM_OBJ_1B - battleanimobj $01, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07 ; ANIM_OBJ_1C - battleanimobj $01, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, $07, $09 ; ANIM_OBJ_1D - battleanimobj $01, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, $07, $09 ; ANIM_OBJ_1E - battleanimobj $01, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, $07, $09 ; ANIM_OBJ_1F - battleanimobj $01, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, $06, $21 ; ANIM_OBJ_20 - battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, $06, $0d ; ANIM_OBJ_21 - battleanimobj $00, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, $06, $0d ; ANIM_OBJ_22 - battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, $02, $0e ; ANIM_OBJ_23 - battleanimobj $61, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, $06, $04 ; ANIM_OBJ_24 - battleanimobj $01, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, $06, $04 ; ANIM_OBJ_25 - battleanimobj $01, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, $05, $0f ; ANIM_OBJ_26 - battleanimobj $61, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, $03, $10 ; ANIM_OBJ_27 - battleanimobj $61, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10 ; ANIM_OBJ_28 - battleanimobj $01, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, $06, $0a ; ANIM_OBJ_29 - battleanimobj $01, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, $06, $0a ; ANIM_OBJ_FROZEN - battleanimobj $01, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, $07, $11 ; ANIM_OBJ_2B - battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, $03, $0d ; ANIM_OBJ_2C - battleanimobj $21, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, $03, $05 ; ANIM_OBJ_2D - battleanimobj $21, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, $03, $05 ; ANIM_OBJ_2E - battleanimobj $21, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, $03, $05 ; ANIM_OBJ_2F - battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, $03, $05 ; ANIM_OBJ_30 - battleanimobj $21, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, $03, $05 ; ANIM_OBJ_31 - battleanimobj $21, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, $02, $08 ; ANIM_OBJ_32 - battleanimobj $21, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, $03, $05 ; ANIM_OBJ_33 - battleanimobj $21, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, $02, $08 ; ANIM_OBJ_34 - battleanimobj $21, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, $02, $02 ; ANIM_OBJ_35 - battleanimobj $01, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, $02, $02 ; ANIM_OBJ_36 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, $02, $02 ; ANIM_OBJ_37 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, $02, $02 ; ANIM_OBJ_38 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, $02, $02 ; ANIM_OBJ_39 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, $02, $02 ; ANIM_OBJ_3A - battleanimobj $21, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, $02, $02 ; ANIM_OBJ_3B - battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, $05, $12 ; ANIM_OBJ_3C - battleanimobj $01, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, $05, $12 ; ANIM_OBJ_3D - battleanimobj $21, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, $02, $13 ; ANIM_OBJ_GUST - battleanimobj $21, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, $02, $14 ; ANIM_OBJ_3F - battleanimobj $21, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, $02, $14 ; ANIM_OBJ_40 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, $02, $14 ; ANIM_OBJ_41 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, $02, $14 ; ANIM_OBJ_42 - battleanimobj $21, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, $02, $14 ; ANIM_OBJ_43 - battleanimobj $21, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, $03, $11 ; ANIM_OBJ_44 - battleanimobj $01, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, $05, $12 ; ANIM_OBJ_45 - battleanimobj $21, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, $02, $15 ; ANIM_OBJ_46 - battleanimobj $01, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, $03, $11 ; ANIM_OBJ_47 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, $05, $16 ; ANIM_OBJ_48 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, $05, $16 ; ANIM_OBJ_49 - battleanimobj $21, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_20, $05, $06 ; ANIM_OBJ_4A - battleanimobj $21, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, $02, $0e ; ANIM_OBJ_4B - battleanimobj $21, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, $02, $17 ; ANIM_OBJ_4C - battleanimobj $01, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, $03, $11 ; ANIM_OBJ_4D - battleanimobj $61, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, $03, $10 ; ANIM_OBJ_4E - battleanimobj $61, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10 ; ANIM_OBJ_4F - battleanimobj $21, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $03, $18 ; ANIM_OBJ_50 - battleanimobj $21, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $02, $18 ; ANIM_OBJ_51 - battleanimobj $21, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, $03, $19 ; ANIM_OBJ_CHICK - battleanimobj $01, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, $02, $19 ; ANIM_OBJ_53 - battleanimobj $01, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, $02, $19 ; ANIM_OBJ_54 - battleanimobj $01, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, $02, $0c ; ANIM_OBJ_SKULL - battleanimobj $21, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, $07, $1a ; ANIM_OBJ_56 - battleanimobj $21, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, $07, $1a ; ANIM_OBJ_57 - battleanimobj $21, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, $02, $1a ; ANIM_OBJ_58 - battleanimobj $21, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, $03, $19 ; ANIM_OBJ_PARALYZED - battleanimobj $21, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, $02, $1b ; ANIM_OBJ_5A - battleanimobj $00, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_29, $02, $1c ; ANIM_OBJ_5B - battleanimobj $21, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_29, $02, $1c ; ANIM_OBJ_5C - battleanimobj $21, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_29, $02, $1c ; ANIM_OBJ_5D - battleanimobj $21, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_2A, $02, $1c ; ANIM_OBJ_5E - battleanimobj $61, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_2B, $02, $1d ; ANIM_OBJ_5F - battleanimobj $61, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, $02, $1d ; ANIM_OBJ_60 - battleanimobj $01, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, $04, $1e ; ANIM_OBJ_61 - battleanimobj $01, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, $02, $15 ; ANIM_OBJ_62 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, $07, $19 ; ANIM_OBJ_63 - battleanimobj $21, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, $02, $14 ; ANIM_OBJ_64 - battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, $02, $11 ; ANIM_OBJ_65 - battleanimobj $01, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_2A, $04, $23 ; ANIM_OBJ_66 - battleanimobj $01, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, $02, $1f ; ANIM_OBJ_67 - battleanimobj $01, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, $02, $1f ; ANIM_OBJ_68 - battleanimobj $01, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, $02, $1f ; ANIM_OBJ_69 - battleanimobj $01, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, $03, $23 ; ANIM_OBJ_6A - battleanimobj $21, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, $02, $1f ; ANIM_OBJ_6B - battleanimobj $01, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11 ; ANIM_OBJ_6C - battleanimobj $01, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11 ; ANIM_OBJ_6D - battleanimobj $21, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, $02, $20 ; ANIM_OBJ_6E - battleanimobj $21, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, $02, $04 ; ANIM_OBJ_6F - battleanimobj $21, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, $02, $18 ; ANIM_OBJ_70 - battleanimobj $01, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, $06, $0d ; ANIM_OBJ_71 - battleanimobj $01, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, $03, $12 ; ANIM_OBJ_72 - battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, $02, $08 ; ANIM_OBJ_73 - battleanimobj $21, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, $02, $1c ; ANIM_OBJ_74 - battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, $02, $15 ; ANIM_OBJ_75 - battleanimobj $21, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, $02, $14 ; ANIM_OBJ_76 - battleanimobj $01, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, $02, $11 ; ANIM_OBJ_77 - battleanimobj $01, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, $02, $22 ; ANIM_OBJ_78 - battleanimobj $01, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, $02, $22 ; ANIM_OBJ_79 - battleanimobj $01, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, $02, $1f ; ANIM_OBJ_7A - battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, $03, $11 ; ANIM_OBJ_7B - battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, $03, $05 ; ANIM_OBJ_7C - battleanimobj $a1, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, $06, $13 ; ANIM_OBJ_7D - battleanimobj $01, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, $04, $23 ; ANIM_OBJ_HEART - battleanimobj $01, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, $04, $03 ; ANIM_OBJ_7F - battleanimobj $01, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, $04, $03 ; ANIM_OBJ_80 - battleanimobj $21, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_29, $02, $1f ; ANIM_OBJ_81 - battleanimobj $21, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, $02, $1f ; ANIM_OBJ_82 - battleanimobj $21, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, $02, $1f ; ANIM_OBJ_83 - battleanimobj $21, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, $03, $1f ; ANIM_OBJ_84 - battleanimobj $01, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, $02, $0e ; ANIM_OBJ_85 - battleanimobj $21, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, $04, $1f ; ANIM_OBJ_86 - battleanimobj $21, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, $02, $1f ; ANIM_OBJ_87 - battleanimobj $21, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, $02, $1f ; ANIM_OBJ_88 - battleanimobj $21, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, $02, $1f ; ANIM_OBJ_89 - battleanimobj $21, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, $03, $23 ; ANIM_OBJ_8A - battleanimobj $01, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, $02, $19 ; ANIM_OBJ_8B - battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, $02, $15 ; ANIM_OBJ_8C - battleanimobj $21, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, $04, $19 ; ANIM_OBJ_8D - battleanimobj $21, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, $02, $1f ; ANIM_OBJ_8E - battleanimobj $01, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, $02, $0a ; ANIM_OBJ_8F - battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, $04, $03 ; ANIM_OBJ_90 - battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, $02, $08 ; ANIM_OBJ_91 - battleanimobj $01, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, $02, $1b ; ANIM_OBJ_92 - battleanimobj $21, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, $04, $23 ; ANIM_OBJ_93 - battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, $02, $25 ; ANIM_OBJ_94 - battleanimobj $21, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, $02, $25 ; ANIM_OBJ_95 - battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, $02, $25 ; ANIM_OBJ_96 - battleanimobj $21, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, $06, $25 ; ANIM_OBJ_97 - battleanimobj $61, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, $05, $23 ; ANIM_OBJ_98 - battleanimobj $21, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, $02, $23 ; ANIM_OBJ_99 - battleanimobj $21, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, $03, $23 ; ANIM_OBJ_9A - battleanimobj $21, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, $02, $25 ; ANIM_OBJ_9B - battleanimobj $21, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, $03, $24 ; ANIM_OBJ_9C - battleanimobj $01, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, $02, $24 ; ANIM_OBJ_9D - battleanimobj $01, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, $03, $24 ; ANIM_OBJ_9E - battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, $04, $12 ; ANIM_OBJ_9F - battleanimobj $21, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, $02, $02 ; ANIM_OBJ_A0 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, $02, $02 ; ANIM_OBJ_A1 - battleanimobj $21, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, $07, $0f ; ANIM_OBJ_A2 - battleanimobj $21, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, $03, $05 ; ANIM_OBJ_A3 - battleanimobj $21, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, $02, $25 ; ANIM_OBJ_A4 - battleanimobj $61, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, $02, $23 ; ANIM_OBJ_A5 - battleanimobj $00, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, $02, $0e ; ANIM_OBJ_A6 - battleanimobj $01, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, $02, $24 ; ANIM_OBJ_A7 - battleanimobj $21, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, $02, $13 ; ANIM_OBJ_A8 - battleanimobj $21, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, $02, $13 ; ANIM_OBJ_A9 - battleanimobj $01, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01 ; ANIM_OBJ_AA - battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, $02, $0e ; ANIM_OBJ_AB - battleanimobj $01, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, $06, $17 ; ANIM_OBJ_AC - battleanimobj $01, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, $02, $01 ; ANIM_OBJ_AD - battleanimobj $21, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, $03, $11 ; ANIM_OBJ_AE - battleanimobj $21, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, $02, $04 ; ANIM_OBJ_AF - battleanimobj $00, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, $04, $1c ; ANIM_OBJ_B0 - battleanimobj $01, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, $02, $19 ; ANIM_OBJ_B1 - battleanimobj $01, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, $07, $09 ; ANIM_OBJ_B2 - battleanimobj $61, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, $03, $27 ; ANIM_OBJ_B3 - battleanimobj $61, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, $06, $15 ; ANIM_OBJ_B4 - battleanimobj $21, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, $07, $09 ; ANIM_OBJ_B5 - battleanimobj $01, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, $04, $1e ; ANIM_OBJ_FLOWER - battleanimobj $01, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, $04, $1f ; ANIM_OBJ_COTTON - battleanimobj $00, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, $00, $28 ; ANIM_OBJ_B8 - battleanimobj $00, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, $01, $29 ; ANIM_OBJ_B9 - battleanimobj $00, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, $00, $28 ; ANIM_OBJ_BA - battleanimobj $00, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, $01, $29 ; ANIM_OBJ_BB -; ccfbe - +INCLUDE "battle/objects/engine.asm" +INCLUDE "battle/objects/data.asm" INCLUDE "battle/objects/functions.asm" - -ReinitBattleAnimFrameset: ; ce7bf (33:67bf) - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], 0 - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld [hl], -1 - ret - -GetBattleAnimFrame: ; ce7d1 -.loop - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld a, [hl] - and a - jr z, .next_frame - dec [hl] - call .GetPointer - ld a, [hli] - push af - jr .okay - -.next_frame - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - inc [hl] - call .GetPointer - ld a, [hli] - cp -2 - jr z, .restart - cp -1 - jr z, .repeat_last - push af - ld a, [hl] - push hl - and $3f - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], a - pop hl - -.okay - ld a, [hl] - and $c0 - srl a - ld [wBattleAnimTemp7], a - pop af - ret - -.repeat_last - xor a - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], a - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - dec [hl] - dec [hl] - jr .loop - -.restart - xor a - ld hl, BATTLEANIMSTRUCT_DURATION - add hl, bc - ld [hl], a - dec a - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld [hl], a - jr .loop - -; ce823 - -.GetPointer: ; ce823 - ld hl, BATTLEANIMSTRUCT_FRAMESET_ID - add hl, bc - ld e, [hl] - ld d, 0 - ld hl, BattleAnimFrameData - add hl, de - add hl, de - ld e, [hl] - inc hl - ld d, [hl] - ld hl, BATTLEANIMSTRUCT_FRAME - add hl, bc - ld l, [hl] - ld h, $0 - add hl, hl - add hl, de - ret - -; ce83c - -GetBattleAnimOAMPointer: ; ce83c - ld l, a - ld h, 0 - ld de, BattleAnimOAMData - add hl, hl - add hl, hl - add hl, de - ret - -; ce846 - -LoadBattleAnimObj: ; ce846 (33:6846) - push hl - ld l, a - ld h, 0 - add hl, hl - add hl, hl - ld de, AnimObjGFX - add hl, de - ld c, [hl] - inc hl - ld b, [hl] - inc hl - ld a, [hli] - ld h, [hl] - ld l, a - pop de - push bc - call DecompressRequest2bpp - pop bc - ret - -; ce85e (33:685e) - +INCLUDE "battle/objects/library.asm" INCLUDE "battle/objects/framesets.asm" INCLUDE "battle/objects/oam.asm" INCLUDE "battle/objects/gfx_headers.asm" diff --git a/battle/bg_effects.asm b/battle/bg_effects.asm index 3da11815d..b84c26ab1 100644 --- a/battle/bg_effects.asm +++ b/battle/bg_effects.asm @@ -174,8 +174,6 @@ BattleBGEffect_FlashInverted: ; c80eb (32:40eb) ld de, .inverted jp BattleBGEffect_FlashContinue -; c80f1 (32:40f1) - .inverted db %11100100 ; 3210 db %00011011 ; 0123 @@ -185,8 +183,6 @@ BattleBGEffect_FlashWhite: ; c80f3 (32:40f3) ld de, .white jp BattleBGEffect_FlashContinue -; c80f9 (32:40f9) - .white db %11100100 ; 3210 db %00000000 ; 0000 @@ -295,12 +291,8 @@ BattleBGEffect_06: ; c8171 (32:4171) ld [wOBP0], a ret -; c8185 (32:4185) - .PalsCGB db $e4, $90, $fe -; c8188 - .PalsSGB db $f0, $c0, $fe ; c818b @@ -318,12 +310,8 @@ BattleBGEffect_07: ; c818b (32:418b) ld [wOBP0], a ret -; c819f (32:419f) - .PalsCGB db $e4, $d8, $fe -; c81a2 - .PalsSGB db $f0, $cc, $fe ; c81a5 @@ -334,8 +322,6 @@ BattleBGEffect_08: ; c81a5 (32:41a5) ld [wBGP], a ret -; c81af (32:41af) - .Pals db $1b, $63, $87, $fe ; c81b3 @@ -399,13 +385,9 @@ BattleBGEffect_ShowMon: ; c81ea (32:41ea) call BattleBGEffect_RunPicResizeScript ret -; c820c (32:420c) - .PlayerData db 0, $31, 0 db -1 -; c8210 - .EnemyData db 3, $00, 3 db -1 @@ -668,15 +650,11 @@ BattleBGEffect_EnterMon: ; c837b (32:437b) call BattleBGEffect_RunPicResizeScript ret -; c8394 (32:4394) - .PlayerData db 2, $31, 2 db 1, $31, 1 db 0, $31, 0 db -1 -; c839e - .EnemyData db 5, $00, 5 db 4, $00, 4 @@ -700,8 +678,6 @@ BattleBGEffect_ReturnMon: ; c83a8 (32:43a8) call BattleBGEffect_RunPicResizeScript ret -; c83c1 (32:43c1) - .PlayerData db 0, $31, 0 db -2, $66, 0 @@ -711,8 +687,6 @@ BattleBGEffect_ReturnMon: ; c83a8 (32:43a8) db -2, $22, 2 db -3, $00, 0 db -1 -; c83d7 - .EnemyData db 3, $00, 3 db -2, $77, 3 @@ -1650,12 +1624,12 @@ BattleBGEffect_2f: ; c8919 (32:4919) BattleBGEffect_26: ; c892a (32:492a) call BattleBGEffects_AnonJumptable .anon_jumptable - dw Functionc8933 - dw Functionc894a - dw Functionc8960 + dw .zero + dw .one + dw .two -Functionc8933: ; c8933 (32:4933) +.zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 @@ -1668,7 +1642,7 @@ Functionc8933: ; c8933 (32:4933) ld [hl], $0 ret -Functionc894a: ; c894a (32:494a) +.one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] @@ -1682,19 +1656,19 @@ Functionc894a: ; c894a (32:494a) ld [hl], a ret -Functionc8960: ; c8960 (32:4960) +.two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_2c: ; c8964 (32:4964) call BattleBGEffects_AnonJumptable .anon_jumptable - dw Functionc896d - dw Functionc8985 - dw Functionc89b1 + dw .zero + dw .one + dw .two -Functionc896d: ; c896d (32:496d) +.zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 @@ -1709,7 +1683,7 @@ Functionc896d: ; c896d (32:496d) ld [hl], a ret -Functionc8985: ; c8985 (32:4985) +.one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] @@ -1737,26 +1711,26 @@ Functionc8985: ; c8985 (32:4985) ld [hl], a ret -Functionc89b1: ; c89b1 (32:49b1) +.two call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_28: ; c89b5 (32:49b5) call BattleBGEffects_AnonJumptable .anon_jumptable - dw Functionc89be - dw Functionc89ca - dw Functionc89da + dw .zero + dw .one + dw .two -Functionc89be: ; c89be (32:49be) +.zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 call Functionc8ede ret -Functionc89ca: ; c89ca (32:49ca) +.one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] @@ -1768,19 +1742,19 @@ Functionc89ca: ; c89ca (32:49ca) call Functionc8f2e ret -Functionc89da: ; c89da (32:49da) +.two ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a - jr z, .asm_c89ea + jr z, .reset dec [hl] ld d, a ld e, 4 call Functionc8f2e ret -.asm_c89ea +.reset call BattleAnim_ResetLCDStatCustom ret @@ -1949,11 +1923,11 @@ endr BattleBGEffect_2b: ; c8acc (32:4acc) call BattleBGEffects_AnonJumptable .anon_jumptable - dw Functionc8ad3 - dw Functionc8ae5 + dw .zero + dw .one -Functionc8ad3: ; c8ad3 (32:4ad3) +.zero call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 @@ -1963,7 +1937,7 @@ Functionc8ad3: ; c8ad3 (32:4ad3) ld [hl], $40 ret -Functionc8ae5: ; c8ae5 (32:4ae5) +.one ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] @@ -1986,15 +1960,15 @@ Functionc8ae5: ; c8ae5 (32:4ae5) BattleBGEffect_1c: ; c8b00 (32:4b00) ld a, [hCGB] and a - jr nz, asm_c8b7a + jr nz, .cgb call BattleBGEffects_AnonJumptable .anon_jumptable - dw Functionc8b0e - dw Functionc8b22 - dw Functionc8b60 + dw .zero + dw .one + dw .two -Functionc8b0e: ; c8b0e (32:4b0e) +.zero call BattleBGEffects_IncrementJumptable ld a, $e4 call BattleBGEffects_SetLYOverrides @@ -2006,7 +1980,7 @@ Functionc8b0e: ; c8b0e (32:4b0e) ld [hLCDStatCustom + 2], a ret -Functionc8b22: ; c8b22 (32:4b22) +.one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] @@ -2023,74 +1997,68 @@ Functionc8b22: ; c8b22 (32:4b22) ld d, $0 push bc call BGEffect_CheckBattleTurn - jr nz, .asm_c8b4d - ld hl, Unknown_c8bd8 + jr nz, .player + ld hl, .CGB_DMGEnemyData add hl, de ld a, [hli] ld [wOBP1], a ld d, a ld e, [hl] - ld bc, $2f30 - jr .asm_c8b5b + lb bc, $2f, $30 + jr .okay -.asm_c8b4d - ld hl, Unknown_c8be0 +.player + ld hl, .DMG_PlayerData add hl, de ld d, [hl] inc hl ld a, [hl] ld [wOBP1], a ld e, a - ld bc, $3728 -.asm_c8b5b - call Functionc8b6c + lb bc, $37, $28 +.okay + call .DMG_LYOverrideLoads pop bc ret -Functionc8b60: ; c8b60 (32:4b60) +.two call Functionc8f19 ld a, $e4 ld [wBGP], a ld [wOBP1], a ret -Functionc8b6c: ; c8b6c (32:4b6c) +.DMG_LYOverrideLoads ld hl, LYOverridesBackup -.asm_c8b6f +.loop1 ld [hl], d inc hl dec b - jr nz, .asm_c8b6f -.asm_c8b74 + jr nz, .loop1 +.loop2 ld [hl], e inc hl dec c - jr nz, .asm_c8b74 + jr nz, .loop2 ret -asm_c8b7a: ; c8b7a (32:4b7a) - ld de, Jumptable_c8b81 +.cgb + ld de, .Jumptable call BatttleBGEffects_GetNamedJumptablePointer jp [hl] -; c8b81 (32:4b81) - -Jumptable_c8b81: ; c8b81 - dw Functionc8b87 - dw Functionc8b91 - dw Functionc8bca -; c8b87 - -Functionc8b87: ; c8b87 +.Jumptable + dw .cgb_zero + dw .cgb_one + dw .cgb_two +.cgb_zero call BattleBGEffects_IncrementJumptable ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld [hl], $0 ret -; c8b91 - -Functionc8b91: ; c8b91 +.cgb_one ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] @@ -2106,48 +2074,42 @@ Functionc8b91: ; c8b91 ld e, a ld d, 0 call BGEffect_CheckBattleTurn - jr nz, .asm_c8bbb - ld hl, Unknown_c8bd8 + jr nz, .player_2 + ld hl, .CGB_DMGEnemyData add hl, de ld a, [hli] push hl - call Functionc8e7f + call BGEffects_LoadBGPal1_OBPal0 pop hl ld a, [hl] - call Functionc8e52 + call BGEffects_LoadBGPal0_OBPal1 ret -.asm_c8bbb - ld hl, Unknown_c8bd8 +.player_2 + ld hl, .CGB_DMGEnemyData add hl, de ld a, [hli] push hl - call Functionc8e52 + call BGEffects_LoadBGPal0_OBPal1 pop hl ld a, [hl] - call Functionc8e7f + call BGEffects_LoadBGPal1_OBPal0 ret -; c8bca - -Functionc8bca: ; c8bca +.cgb_two ld a, $e4 - call Functionc8e52 + call BGEffects_LoadBGPal0_OBPal1 ld a, $e4 - call Functionc8e7f + call BGEffects_LoadBGPal1_OBPal0 call EndBattleBGEffect ret -; c8bd8 - -Unknown_c8bd8: ; c8bd8 +.CGB_DMGEnemyData db $e4, $e4 db $f8, $90 db $fc, $40 db $f8, $90 -; c8be0 - -Unknown_c8be0: ; c8be0 +.DMG_PlayerData db $e4, $e4 db $90, $f8 db $40, $fc @@ -2155,112 +2117,94 @@ Unknown_c8be0: ; c8be0 ; c8be8 BattleBGEffect_RapidFlash: ; c8be8 (32:4be8) - ld de, Unknown_c8bef - call Functionc8d77 + ld de, .FlashPals + call BGEffect_RapidCyclePals ret -; c8bef (32:4bef) - -Unknown_c8bef: ; c8bef +.FlashPals db $e4, $6c, $fe ; c8bf2 BattleBGEffect_16: ; c8bf2 (32:4bf2) - ld de, Unknown_c8bf9 - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8bf9 (32:4bf9) - -Unknown_c8bf9: ; c8bf9 +.Pals db $e4, $90, $40, $ff ; c8bfd BattleBGEffect_17: ; c8bfd (32:4bfd) - ld de, Unknown_c8c04 - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8c04 (32:4c04) - -Unknown_c8c04: ; c8c04 +.Pals db $e4, $f8, $fc, $ff ; c8c08 BattleBGEffect_18: ; c8c08 (32:4c08) - ld de, Unknown_c8c0f - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8c0f (32:4c0f) - -Unknown_c8c0f: ; c8c0f +.Pals db $e4, $90, $40, $90, $fe ; c8c14 BattleBGEffect_19: ; c8c14 (32:4c14) - ld de, Unknown_c8c1b - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8c1b (32:4c1b) - -Unknown_c8c1b: ; c8c1b +.Pals db $e4, $f8, $fc, $f8, $fe ; c8c20 BattleBGEffect_1a: ; c8c20 (32:4c20) - ld de, Unknown_c8c27 - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8c27 (32:4c27) - -Unknown_c8c27: ; c8c27 +.Pals db $e4, $f8, $fc, $f8, $e4, $90, $40, $90, $fe ; c8c30 BattleBGEffect_1b: ; c8c30 (32:4c30) - ld de, Unknown_c8c37 - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8c37 (32:4c37) - -Unknown_c8c37: +.Pals db $e4, $fc, $e4, $00, $fe ; c8c3c BattleBGEffect_1d: ; c8c3c (32:4c3c) - ld de, Unknown_c8c43 - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8c43 (32:4c43) - -Unknown_c8c43: +.Pals db $e4, $90, $40, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $40, $90, $e4, $ff ; c8c55 BattleBGEffect_1e: ; c8c55 (32:4c55) - ld de, Unknown_c8c5c - call Functionc8d77 + ld de, .Pals + call BGEffect_RapidCyclePals ret -; c8c5c (32:4c5c) - -Unknown_c8c5c: +.Pals db $00, $40, $90, $e4, $ff ; c8c61 BattleBGEffect_VibrateMon: ; c8c61 (32:4c61) call BattleBGEffects_AnonJumptable .anon_jumptable - dw Functionc8c68 - dw Functionc8c85 + dw .zero + dw .one -Functionc8c68: ; c8c68 (32:4c68) +.zero: ; c8c68 (32:4c68) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 @@ -2276,12 +2220,12 @@ Functionc8c68: ; c8c68 (32:4c68) ld [hl], $20 ret -Functionc8c85: ; c8c85 (32:4c85) +.one: ; c8c85 (32:4c85) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and a - jr z, .asm_c8c9e + jr z, .finish dec [hl] and $1 ret nz @@ -2294,19 +2238,19 @@ Functionc8c85: ; c8c85 (32:4c85) call Functionc900b ret -.asm_c8c9e +.finish call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_WobbleMon: ; c8ca2 (32:4ca2) call BattleBGEffects_AnonJumptable .anon_jumptable - dw Functionc8cab - dw Functionc8cc3 - dw Functionc8cdd + dw .zero + dw .one + dw .two -Functionc8cab: ; c8cab (32:4cab) +.zero: ; c8cab (32:4cab) call BattleBGEffects_IncrementJumptable call BattleBGEffects_ClearLYOverrides ld a, $43 @@ -2320,12 +2264,12 @@ Functionc8cab: ; c8cab (32:4cab) ld [hl], $0 ret -Functionc8cc3: ; c8cc3 (32:4cc3) +.one: ; c8cc3 (32:4cc3) ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] cp $40 - jr nc, Functionc8cdd + jr nc, .two ld d, $6 call BattleBGEffects_Sine call Functionc900b @@ -2336,40 +2280,40 @@ Functionc8cc3: ; c8cc3 (32:4cc3) ld [hl], a ret -Functionc8cdd: ; c8cdd (32:4cdd) +.two: ; c8cdd (32:4cdd) call BattleAnim_ResetLCDStatCustom ret BattleBGEffect_2e: ; c8ce1 (32:4ce1) call Functionc8d0b - jr c, .asm_c8cea + jr c, .xor_a bit 7, a - jr z, .asm_c8ceb -.asm_c8cea + jr z, .okay +.xor_a xor a -.asm_c8ceb +.okay push af call DelayFrame pop af ld [hSCY], a xor $ff inc a - ld [OTPartyMon3SpclAtk], a + ld [AnimObject01_YOffset], a ret BattleBGEffect_1f: ; c8cf9 (32:4cf9) call Functionc8d0b - jr nc, .asm_c8cff + jr nc, .skip xor a -.asm_c8cff +.skip ld [hSCX], a ret BattleBGEffect_20: ; c8d02 (32:4d02) call Functionc8d0b - jr nc, .asm_c8d08 + jr nc, .skip xor a -.asm_c8d08 +.skip ld [hSCY], a ret @@ -2378,18 +2322,18 @@ Functionc8d0b: ; c8d0b (32:4d0b) add hl, bc ld a, [hl] and a - jr nz, .asm_c8d18 + jr nz, .okay call EndBattleBGEffect scf ret -.asm_c8d18 +.okay dec [hl] ld hl, BG_EFFECT_STRUCT_03 add hl, bc ld a, [hl] and $f - jr z, .asm_c8d2a + jr z, .every_16_frames dec [hl] ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc @@ -2397,7 +2341,7 @@ Functionc8d0b: ; c8d0b (32:4d0b) and a ret -.asm_c8d2a +.every_16_frames ld a, [hl] swap a or [hl] @@ -2416,7 +2360,7 @@ BattleBGEffect_35: ; c8d3a (32:4d3a) add hl, bc ld a, [hl] cp $40 - jr nc, .asm_c8d53 + jr nc, .finish ld d, $6 call BattleBGEffects_Sine ld [hSCX], a @@ -2427,7 +2371,7 @@ BattleBGEffect_35: ; c8d3a (32:4d3a) ld [hl], a ret -.asm_c8d53 +.finish xor a ld [hSCX], a ret @@ -2437,7 +2381,7 @@ Functionc8d57: ; c8d57 (32:4d57) add hl, bc ld a, [hl] and a - jr z, .asm_c8d69 + jr z, .zero dec [hl] ld hl, BG_EFFECT_STRUCT_03 @@ -2446,7 +2390,7 @@ Functionc8d57: ; c8d57 (32:4d57) call Functionc8eb2 ret -.asm_c8d69 +.zero ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] @@ -2456,23 +2400,23 @@ Functionc8d57: ; c8d57 (32:4d57) call Functionc8eac ret -Functionc8d77: ; c8d77 (32:4d77) +BGEffect_RapidCyclePals: ; c8d77 (32:4d77) ld a, [hCGB] and a - jr nz, asm_c8dd4 + jr nz, .cgb push de - ld de, Jumptable_c8d85 + ld de, .Jumptable_DMG call BatttleBGEffects_GetNamedJumptablePointer pop de jp [hl] -Jumptable_c8d85: ; c8d85 (32:4d85) - dw Functionc8d8b - dw Functionc8daa - dw Functionc8dc9 +.Jumptable_DMG + dw .zero_dmg + dw .one_dmg + dw .two_dmg -Functionc8d8b: ; c8d8b (32:4d8b) +.zero_dmg: ; c8d8b (32:4d8b) call BattleBGEffects_IncrementJumptable ld a, $e4 call BattleBGEffects_SetLYOverrides @@ -2490,59 +2434,59 @@ Functionc8d8b: ; c8d8b (32:4d8b) ld [hl], a ret -Functionc8daa: ; c8daa (32:4daa) +.one_dmg: ; c8daa (32:4daa) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and $f - jr z, .asm_c8db5 + jr z, .okay_1_dmg dec [hl] ret -.asm_c8db5 +.okay_1_dmg ld a, [hl] swap a or [hl] ld [hl], a call Functionc8eac - jr c, .asm_c8dc3 + jr c, .okay_2_dmg call Functionc900b ret -.asm_c8dc3 +.okay_2_dmg ld hl, BG_EFFECT_STRUCT_03 add hl, bc dec [hl] ret -Functionc8dc9: ; c8dc9 (32:4dc9) +.two_dmg: ; c8dc9 (32:4dc9) call Functionc8f19 ld a, $e4 ld [rBGP], a call EndBattleBGEffect ret -asm_c8dd4: ; c8dd4 (32:4dd4) +.cgb push de - ld de, Jumptable_c8ddd + ld de, .Jumptable_CGB call BatttleBGEffects_GetNamedJumptablePointer pop de jp [hl] -Jumptable_c8ddd: ; c8ddd (32:4ddd) - dw Functionc8de7 - dw Functionc8e02 - dw Functionc8e21 - dw Functionc8e2a - dw Functionc8e49 +.Jumptable_CGB: ; c8ddd (32:4ddd) + dw .zero_cgb + dw .one_cgb + dw .two_cgb + dw .three_cgb + dw .four_cgb -Functionc8de7: ; c8de7 (32:4de7) +.zero_cgb: ; c8de7 (32:4de7) call BGEffect_CheckBattleTurn - jr nz, .asm_c8df2 + jr nz, .player_turn_cgb call BattleBGEffects_IncrementJumptable call BattleBGEffects_IncrementJumptable -.asm_c8df2 +.player_turn_cgb call BattleBGEffects_IncrementJumptable ld hl, BG_EFFECT_STRUCT_03 add hl, bc @@ -2553,69 +2497,69 @@ Functionc8de7: ; c8de7 (32:4de7) ld [hl], a ret -Functionc8e02: ; c8e02 (32:4e02) +.one_cgb: ; c8e02 (32:4e02) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and $f - jr z, .asm_c8e0d + jr z, .okay_1_cgb dec [hl] ret -.asm_c8e0d +.okay_1_cgb ld a, [hl] swap a or [hl] ld [hl], a call Functionc8eac - jr c, .asm_c8e1b - call Functionc8e52 + jr c, .okay_2_cgb + call BGEffects_LoadBGPal0_OBPal1 ret -.asm_c8e1b +.okay_2_cgb ld hl, BG_EFFECT_STRUCT_03 add hl, bc dec [hl] ret -Functionc8e21: ; c8e21 (32:4e21) +.two_cgb: ; c8e21 (32:4e21) ld a, $e4 - call Functionc8e52 + call BGEffects_LoadBGPal0_OBPal1 call EndBattleBGEffect ret -Functionc8e2a: ; c8e2a (32:4e2a) +.three_cgb: ; c8e2a (32:4e2a) ld hl, BG_EFFECT_STRUCT_BATTLE_TURN add hl, bc ld a, [hl] and $f - jr z, .asm_c8e35 + jr z, .okay_3_cgb dec [hl] ret -.asm_c8e35 +.okay_3_cgb ld a, [hl] swap a or [hl] ld [hl], a call Functionc8eac - jr c, .asm_c8e43 - call Functionc8e7f + jr c, .okay_4_cgb + call BGEffects_LoadBGPal1_OBPal0 ret -.asm_c8e43 +.okay_4_cgb ld hl, BG_EFFECT_STRUCT_03 add hl, bc dec [hl] ret -Functionc8e49: ; c8e49 (32:4e49) +.four_cgb: ; c8e49 (32:4e49) ld a, $e4 - call Functionc8e7f + call BGEffects_LoadBGPal1_OBPal0 call EndBattleBGEffect ret -Functionc8e52: ; c8e52 (32:4e52) +BGEffects_LoadBGPal0_OBPal1: ; c8e52 (32:4e52) ld h, a ld a, [rSVBK] push af @@ -2642,7 +2586,7 @@ Functionc8e52: ; c8e52 (32:4e52) ld [hCGBPalUpdate], a ret -Functionc8e7f: ; c8e7f (32:4e7f) +BGEffects_LoadBGPal1_OBPal0: ; c8e7f (32:4e7f) ld h, a ld a, [rSVBK] push af diff --git a/battle/objects/data.asm b/battle/objects/data.asm new file mode 100755 index 000000000..cd4a6fb60 --- /dev/null +++ b/battle/objects/data.asm @@ -0,0 +1,573 @@ +BattleAnimObjects: ; ccb56 +battleanimobj: MACRO + +; ??, ??, frameset, function, ??, tile offset + db \1, \2, \3, \4, \5, \6 +endm + + +; ANIM_OBJ_00 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_01 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_02 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_03 + battleanimobj $01, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_04 + battleanimobj $01, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_05 + battleanimobj $01, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_06 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_07 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, $02, $01 + +; ANIM_OBJ_08 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_09 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_0A + battleanimobj $01, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, $02, $01 + +; ANIM_OBJ_0B + battleanimobj $01, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, $04, $03 + +; ANIM_OBJ_0C + battleanimobj $01, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, $04, $03 + +; ANIM_OBJ_0D + battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, $04, $03 + +; ANIM_OBJ_0E + battleanimobj $01, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, $04, $03 + +; ANIM_OBJ_0F + battleanimobj $01, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, $04, $03 + +; ANIM_OBJ_BURNED + battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, $04, $03 + +; ANIM_OBJ_11 + battleanimobj $01, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, $06, $0a + +; ANIM_OBJ_12 + battleanimobj $01, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, $06, $0a + +; ANIM_OBJ_13 + battleanimobj $01, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, $06, $0a + +; ANIM_OBJ_14 + battleanimobj $21, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_0B, $05, $06 + +; ANIM_OBJ_POKE_BALL + battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, $04, $0b + +; ANIM_OBJ_16 + battleanimobj $00, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, $04, $0b + +; ANIM_OBJ_17 + battleanimobj $01, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08 + +; ANIM_OBJ_18 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, $04, $08 + +; ANIM_OBJ_19 + battleanimobj $01, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, $02, $0c + +; ANIM_OBJ_1A + battleanimobj $01, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, $02, $0c + +; ANIM_OBJ_1B + battleanimobj $01, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07 + +; ANIM_OBJ_1C + battleanimobj $01, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, $02, $07 + +; ANIM_OBJ_1D + battleanimobj $01, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, $07, $09 + +; ANIM_OBJ_1E + battleanimobj $01, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, $07, $09 + +; ANIM_OBJ_1F + battleanimobj $01, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, $07, $09 + +; ANIM_OBJ_20 + battleanimobj $01, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, $06, $21 + +; ANIM_OBJ_21 + battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, $06, $0d + +; ANIM_OBJ_22 + battleanimobj $00, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, $06, $0d + +; ANIM_OBJ_23 + battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, $02, $0e + +; ANIM_OBJ_24 + battleanimobj $61, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, $06, $04 + +; ANIM_OBJ_25 + battleanimobj $01, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, $06, $04 + +; ANIM_OBJ_26 + battleanimobj $01, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, $05, $0f + +; ANIM_OBJ_27 + battleanimobj $61, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, $03, $10 + +; ANIM_OBJ_28 + battleanimobj $61, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10 + +; ANIM_OBJ_29 + battleanimobj $01, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, $06, $0a + +; ANIM_OBJ_FROZEN + battleanimobj $01, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, $06, $0a + +; ANIM_OBJ_2B + battleanimobj $01, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, $07, $11 + +; ANIM_OBJ_2C + battleanimobj $01, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, $03, $0d + +; ANIM_OBJ_2D + battleanimobj $21, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, $03, $05 + +; ANIM_OBJ_2E + battleanimobj $21, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, $03, $05 + +; ANIM_OBJ_2F + battleanimobj $21, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, $03, $05 + +; ANIM_OBJ_30 + battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, $03, $05 + +; ANIM_OBJ_31 + battleanimobj $21, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, $03, $05 + +; ANIM_OBJ_32 + battleanimobj $21, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, $02, $08 + +; ANIM_OBJ_33 + battleanimobj $21, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, $03, $05 + +; ANIM_OBJ_34 + battleanimobj $21, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, $02, $08 + +; ANIM_OBJ_35 + battleanimobj $21, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, $02, $02 + +; ANIM_OBJ_36 + battleanimobj $01, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, $02, $02 + +; ANIM_OBJ_37 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, $02, $02 + +; ANIM_OBJ_38 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, $02, $02 + +; ANIM_OBJ_39 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, $02, $02 + +; ANIM_OBJ_3A + battleanimobj $21, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, $02, $02 + +; ANIM_OBJ_3B + battleanimobj $21, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, $02, $02 + +; ANIM_OBJ_3C + battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, $05, $12 + +; ANIM_OBJ_3D + battleanimobj $01, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, $05, $12 + +; ANIM_OBJ_GUST + battleanimobj $21, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, $02, $13 + +; ANIM_OBJ_3F + battleanimobj $21, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, $02, $14 + +; ANIM_OBJ_40 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, $02, $14 + +; ANIM_OBJ_41 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, $02, $14 + +; ANIM_OBJ_42 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, $02, $14 + +; ANIM_OBJ_43 + battleanimobj $21, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, $02, $14 + +; ANIM_OBJ_44 + battleanimobj $21, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, $03, $11 + +; ANIM_OBJ_45 + battleanimobj $01, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, $05, $12 + +; ANIM_OBJ_46 + battleanimobj $21, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, $02, $15 + +; ANIM_OBJ_47 + battleanimobj $01, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, $03, $11 + +; ANIM_OBJ_48 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, $05, $16 + +; ANIM_OBJ_49 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, $05, $16 + +; ANIM_OBJ_4A + battleanimobj $21, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_20, $05, $06 + +; ANIM_OBJ_4B + battleanimobj $21, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, $02, $0e + +; ANIM_OBJ_4C + battleanimobj $21, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, $02, $17 + +; ANIM_OBJ_4D + battleanimobj $01, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, $03, $11 + +; ANIM_OBJ_4E + battleanimobj $61, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, $03, $10 + +; ANIM_OBJ_4F + battleanimobj $61, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, $03, $10 + +; ANIM_OBJ_50 + battleanimobj $21, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $03, $18 + +; ANIM_OBJ_51 + battleanimobj $21, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, $02, $18 + +; ANIM_OBJ_CHICK + battleanimobj $21, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, $03, $19 + +; ANIM_OBJ_53 + battleanimobj $01, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, $02, $19 + +; ANIM_OBJ_54 + battleanimobj $01, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, $02, $19 + +; ANIM_OBJ_SKULL + battleanimobj $01, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, $02, $0c + +; ANIM_OBJ_56 + battleanimobj $21, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, $07, $1a + +; ANIM_OBJ_57 + battleanimobj $21, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, $07, $1a + +; ANIM_OBJ_58 + battleanimobj $21, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, $02, $1a + +; ANIM_OBJ_PARALYZED + battleanimobj $21, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, $03, $19 + +; ANIM_OBJ_5A + battleanimobj $21, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, $02, $1b + +; ANIM_OBJ_5B + battleanimobj $00, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_29, $02, $1c + +; ANIM_OBJ_5C + battleanimobj $21, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_29, $02, $1c + +; ANIM_OBJ_5D + battleanimobj $21, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_29, $02, $1c + +; ANIM_OBJ_5E + battleanimobj $21, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_2A, $02, $1c + +; ANIM_OBJ_5F + battleanimobj $61, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_2B, $02, $1d + +; ANIM_OBJ_60 + battleanimobj $61, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, $02, $1d + +; ANIM_OBJ_61 + battleanimobj $01, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, $04, $1e + +; ANIM_OBJ_62 + battleanimobj $01, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, $02, $15 + +; ANIM_OBJ_63 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, $07, $19 + +; ANIM_OBJ_64 + battleanimobj $21, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, $02, $14 + +; ANIM_OBJ_65 + battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, $02, $11 + +; ANIM_OBJ_66 + battleanimobj $01, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_2A, $04, $23 + +; ANIM_OBJ_67 + battleanimobj $01, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, $02, $1f + +; ANIM_OBJ_68 + battleanimobj $01, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, $02, $1f + +; ANIM_OBJ_69 + battleanimobj $01, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, $02, $1f + +; ANIM_OBJ_6A + battleanimobj $01, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, $03, $23 + +; ANIM_OBJ_6B + battleanimobj $21, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, $02, $1f + +; ANIM_OBJ_6C + battleanimobj $01, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11 + +; ANIM_OBJ_6D + battleanimobj $01, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, $03, $11 + +; ANIM_OBJ_6E + battleanimobj $21, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, $02, $20 + +; ANIM_OBJ_6F + battleanimobj $21, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, $02, $04 + +; ANIM_OBJ_70 + battleanimobj $21, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, $02, $18 + +; ANIM_OBJ_71 + battleanimobj $01, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, $06, $0d + +; ANIM_OBJ_72 + battleanimobj $01, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, $03, $12 + +; ANIM_OBJ_73 + battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, $02, $08 + +; ANIM_OBJ_74 + battleanimobj $21, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, $02, $1c + +; ANIM_OBJ_75 + battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, $02, $15 + +; ANIM_OBJ_76 + battleanimobj $21, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, $02, $14 + +; ANIM_OBJ_77 + battleanimobj $01, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, $02, $11 + +; ANIM_OBJ_78 + battleanimobj $01, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, $02, $22 + +; ANIM_OBJ_79 + battleanimobj $01, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, $02, $22 + +; ANIM_OBJ_7A + battleanimobj $01, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, $02, $1f + +; ANIM_OBJ_7B + battleanimobj $01, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, $03, $11 + +; ANIM_OBJ_7C + battleanimobj $21, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, $03, $05 + +; ANIM_OBJ_7D + battleanimobj $a1, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, $06, $13 + +; ANIM_OBJ_HEART + battleanimobj $01, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, $04, $23 + +; ANIM_OBJ_7F + battleanimobj $01, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, $04, $03 + +; ANIM_OBJ_80 + battleanimobj $01, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, $04, $03 + +; ANIM_OBJ_81 + battleanimobj $21, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_29, $02, $1f + +; ANIM_OBJ_82 + battleanimobj $21, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, $02, $1f + +; ANIM_OBJ_83 + battleanimobj $21, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, $02, $1f + +; ANIM_OBJ_84 + battleanimobj $21, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, $03, $1f + +; ANIM_OBJ_85 + battleanimobj $01, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, $02, $0e + +; ANIM_OBJ_86 + battleanimobj $21, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, $04, $1f + +; ANIM_OBJ_87 + battleanimobj $21, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, $02, $1f + +; ANIM_OBJ_88 + battleanimobj $21, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, $02, $1f + +; ANIM_OBJ_89 + battleanimobj $21, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, $02, $1f + +; ANIM_OBJ_8A + battleanimobj $21, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, $03, $23 + +; ANIM_OBJ_8B + battleanimobj $01, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, $02, $19 + +; ANIM_OBJ_8C + battleanimobj $21, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, $02, $15 + +; ANIM_OBJ_8D + battleanimobj $21, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, $04, $19 + +; ANIM_OBJ_8E + battleanimobj $21, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, $02, $1f + +; ANIM_OBJ_8F + battleanimobj $01, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, $02, $0a + +; ANIM_OBJ_90 + battleanimobj $01, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, $04, $03 + +; ANIM_OBJ_91 + battleanimobj $01, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, $02, $08 + +; ANIM_OBJ_92 + battleanimobj $01, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, $02, $1b + +; ANIM_OBJ_93 + battleanimobj $21, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, $04, $23 + +; ANIM_OBJ_94 + battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, $02, $25 + +; ANIM_OBJ_95 + battleanimobj $21, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, $02, $25 + +; ANIM_OBJ_96 + battleanimobj $21, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, $02, $25 + +; ANIM_OBJ_97 + battleanimobj $21, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, $06, $25 + +; ANIM_OBJ_98 + battleanimobj $61, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, $05, $23 + +; ANIM_OBJ_99 + battleanimobj $21, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, $02, $23 + +; ANIM_OBJ_9A + battleanimobj $21, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, $03, $23 + +; ANIM_OBJ_9B + battleanimobj $21, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, $02, $25 + +; ANIM_OBJ_9C + battleanimobj $21, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, $03, $24 + +; ANIM_OBJ_9D + battleanimobj $01, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, $02, $24 + +; ANIM_OBJ_9E + battleanimobj $01, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, $03, $24 + +; ANIM_OBJ_9F + battleanimobj $01, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, $04, $12 + +; ANIM_OBJ_A0 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, $02, $02 + +; ANIM_OBJ_A1 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, $02, $02 + +; ANIM_OBJ_A2 + battleanimobj $21, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, $07, $0f + +; ANIM_OBJ_A3 + battleanimobj $21, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, $03, $05 + +; ANIM_OBJ_A4 + battleanimobj $21, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, $02, $25 + +; ANIM_OBJ_A5 + battleanimobj $61, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, $02, $23 + +; ANIM_OBJ_A6 + battleanimobj $00, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, $02, $0e + +; ANIM_OBJ_A7 + battleanimobj $01, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, $02, $24 + +; ANIM_OBJ_A8 + battleanimobj $21, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, $02, $13 + +; ANIM_OBJ_A9 + battleanimobj $21, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, $02, $13 + +; ANIM_OBJ_AA + battleanimobj $01, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, $02, $01 + +; ANIM_OBJ_AB + battleanimobj $01, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, $02, $0e + +; ANIM_OBJ_AC + battleanimobj $01, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, $06, $17 + +; ANIM_OBJ_AD + battleanimobj $01, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, $02, $01 + +; ANIM_OBJ_AE + battleanimobj $21, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, $03, $11 + +; ANIM_OBJ_AF + battleanimobj $21, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, $02, $04 + +; ANIM_OBJ_B0 + battleanimobj $00, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, $04, $1c + +; ANIM_OBJ_B1 + battleanimobj $01, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, $02, $19 + +; ANIM_OBJ_B2 + battleanimobj $01, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, $07, $09 + +; ANIM_OBJ_B3 + battleanimobj $61, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, $03, $27 + +; ANIM_OBJ_B4 + battleanimobj $61, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, $06, $15 + +; ANIM_OBJ_B5 + battleanimobj $21, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, $07, $09 + +; ANIM_OBJ_FLOWER + battleanimobj $01, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, $04, $1e + +; ANIM_OBJ_COTTON + battleanimobj $01, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, $04, $1f + +; ANIM_OBJ_B8 + battleanimobj $00, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, $00, $28 + +; ANIM_OBJ_B9 + battleanimobj $00, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, $01, $29 + +; ANIM_OBJ_BA + battleanimobj $00, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, $00, $28 + +; ANIM_OBJ_BB + battleanimobj $00, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, $01, $29 + +; ccfbe diff --git a/battle/objects/engine.asm b/battle/objects/engine.asm new file mode 100755 index 000000000..eca0af8a1 --- /dev/null +++ b/battle/objects/engine.asm @@ -0,0 +1,314 @@ +QueueBattleAnimation: ; cc9a1 (33:49a1) + ld hl, ActiveAnimObjects + ld e, 10 +.loop + ld a, [hl] + and a + jr z, .done + ld bc, BATTLEANIMSTRUCT_LENGTH + add hl, bc + dec e + jr nz, .loop + scf + ret + +.done + ld c, l + ld b, h + ld hl, wNumActiveBattleAnims + inc [hl] + call InitBattleAnimation + ret + +DeinitBattleAnimation: ; cc9bd + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld [hl], $0 + ret + +; cc9c4 + +InitBattleAnimation: ; cc9c4 (33:49c4) + ld a, [wBattleAnimTemp0] + ld e, a + ld d, 0 + ld hl, BattleAnimObjects +rept 6 + add hl, de +endr + ld e, l + ld d, h + ld hl, BATTLEANIMSTRUCT_INDEX + add hl, bc + ld a, [wNumActiveBattleAnims] + ld [hli], a ; Index + ld a, [de] + inc de + ld [hli], a ; 01 + ld a, [de] + inc de + ld [hli], a ; 02 + ld a, [de] + inc de + ld [hli], a ; Frameset ID + ld a, [de] + inc de + ld [hli], a ; Function + ld a, [de] + inc de + ld [hli], a ; 05 + ld a, [de] + call GetBattleAnimTileOffset + ld [hli], a ; Tile ID + ld a, [wBattleAnimTemp1] + ld [hli], a ; X Coord + ld a, [wBattleAnimTemp2] + ld [hli], a ; Y Coord + xor a + ld [hli], a ; X Offset + ld [hli], a ; Y Offset + ld a, [wBattleAnimTemp3] + ld [hli], a ; 0b + xor a + ld [hli], a ; 0c + dec a + ld [hli], a ; 0d + xor a + ld [hli], a ; 0e + ld [hli], a ; 0f + ld [hl], a ; 10 + ret + +BattleAnimOAMUpdate: ; cca09 + call InitBattleAnimBuffer + call GetBattleAnimFrame + cp -3 + jp z, .done + cp -4 + jp z, .delete + push af + ld hl, wBattleAnimTempOAMFlags + ld a, [wBattleAnimTemp7] + xor [hl] + and $e0 + ld [hl], a + pop af + push bc + call GetBattleAnimOAMPointer + ld a, [wBattleAnimTempTileID] + add [hl] + ld [wBattleAnimTempTileID], a + inc hl + ld a, [hli] + ld c, a + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wBattleAnimOAMPointerLo] + ld e, a + ld d, Sprites / $100 +.loop + ld a, [wBattleAnimTempYCoord] + ld b, a + ld a, [wBattleAnimTempYOffset] + add b + ld b, a + push hl + ld a, [hl] + ld hl, wBattleAnimTempOAMFlags + bit 6, [hl] + jr z, .no_yflip + add $8 + xor $ff + inc a + +.no_yflip + pop hl + add b + ld [de], a + inc hl + inc de + ld a, [wBattleAnimTempXCoord] + ld b, a + ld a, [wBattleAnimTempXOffset] + add b + ld b, a + push hl + ld a, [hl] + ld hl, wBattleAnimTempOAMFlags + bit 5, [hl] + jr z, .no_xflip + add $8 + xor $ff + inc a + +.no_xflip + pop hl + add b + ld [de], a + inc hl + inc de + ld a, [wBattleAnimTempTileID] + add $31 + add [hl] + ld [de], a + inc hl + inc de + ld a, [wBattleAnimTempOAMFlags] + ld b, a + ld a, [hl] + xor b + and $e0 + ld b, a + ld a, [hl] + and $10 + or b + ld b, a + ld a, [wBattleAnimTempPalette] + and $f + or b + ld [de], a + inc hl + inc de + ld a, e + ld [wBattleAnimOAMPointerLo], a + cp $a0 + jr nc, .exit_set_carry + dec c + jr nz, .loop + pop bc + jr .done + +.delete + call DeinitBattleAnimation + +.done + and a + ret + +.exit_set_carry + pop bc + scf + ret + +; ccaaa + +InitBattleAnimBuffer: ; ccaaa + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + ld a, [hl] + and %10000000 + ld [wBattleAnimTempOAMFlags], a + xor a + ld [wBattleAnimTemp7], a + ld hl, BATTLEANIMSTRUCT_PALETTE + add hl, bc + ld a, [hl] + ld [wBattleAnimTempPalette], a + ld hl, BATTLEANIMSTRUCT_02 + add hl, bc + ld a, [hl] + ld [wBattleAnimTemp1], a + ld hl, BATTLEANIMSTRUCT_TILEID + add hl, bc + ld a, [hli] + ld [wBattleAnimTempTileID], a + ld a, [hli] + ld [wBattleAnimTempXCoord], a + ld a, [hli] + ld [wBattleAnimTempYCoord], a + ld a, [hli] + ld [wBattleAnimTempXOffset], a + ld a, [hli] + ld [wBattleAnimTempYOffset], a + ld a, [hBattleTurn] + and a + ret z + ld hl, BATTLEANIMSTRUCT_01 + add hl, bc + ld a, [hl] + ld [wBattleAnimTempOAMFlags], a + bit 0, [hl] + ret z + ld hl, BATTLEANIMSTRUCT_XCOORD + add hl, bc + ld a, [hli] + ld d, a + ld a, (-10 * 8) + 4 + sub d + ld [wBattleAnimTempXCoord], a + ld a, [hli] + ld d, a + ld a, [wBattleAnimTemp1] + cp $ff + jr nz, .check_kinesis_softboiled_milkdrink + ld a, 5 * 8 + add d + jr .done + +.check_kinesis_softboiled_milkdrink + sub d + push af + ld a, [FXAnimIDHi] + or a + jr nz, .no_sub + ld a, [FXAnimIDLo] + cp KINESIS + jr z, .kinesis + cp SOFTBOILED + jr z, .softboiled + cp MILK_DRINK + jr nz, .no_sub +.kinesis +.softboiled +.milk_drink + pop af + sub 1 * 8 + jr .done + +.no_sub + pop af +.done + ld [wBattleAnimTempYCoord], a + ld a, [hli] + xor $ff + inc a + ld [wBattleAnimTempXOffset], a + ret + +; ccb31 + +GetBattleAnimTileOffset: ; ccb31 (33:4b31) + push hl + push bc + ld hl, wBattleAnimTileDict + ld b, a + ld c, 10 / 2 +.loop + ld a, [hli] + cp b + jr z, .load + inc hl + dec c + jr nz, .loop + xor a + jr .done + +.load + ld a, [hl] +.done + pop bc + pop hl + ret + +_ExecuteBGEffects: ; ccb48 + callab ExecuteBGEffects + ret + +; ccb4f + +_QueueBGEffect: ; ccb4f (33:4b4f) + callab QueueBGEffect + ret + +; ccb56 (33:4b56) diff --git a/battle/objects/library.asm b/battle/objects/library.asm new file mode 100755 index 000000000..a692211d3 --- /dev/null +++ b/battle/objects/library.asm @@ -0,0 +1,130 @@ +ReinitBattleAnimFrameset: ; ce7bf (33:67bf) + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], 0 + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], -1 + ret + +GetBattleAnimFrame: ; ce7d1 +.loop + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld a, [hl] + and a + jr z, .next_frame + dec [hl] + call .GetPointer + ld a, [hli] + push af + jr .okay + +.next_frame + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + inc [hl] + call .GetPointer + ld a, [hli] + cp -2 + jr z, .restart + cp -1 + jr z, .repeat_last + push af + ld a, [hl] + push hl + and $3f + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + pop hl + +.okay + ld a, [hl] + and $c0 + srl a + ld [wBattleAnimTemp7], a + pop af + ret + +.repeat_last + xor a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + dec [hl] + dec [hl] + jr .loop + +.restart + xor a + ld hl, BATTLEANIMSTRUCT_DURATION + add hl, bc + ld [hl], a + dec a + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld [hl], a + jr .loop + +; ce823 + +.GetPointer: ; ce823 + ld hl, BATTLEANIMSTRUCT_FRAMESET_ID + add hl, bc + ld e, [hl] + ld d, 0 + ld hl, BattleAnimFrameData + add hl, de + add hl, de + ld e, [hl] + inc hl + ld d, [hl] + ld hl, BATTLEANIMSTRUCT_FRAME + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, de + ret + +; ce83c + +GetBattleAnimOAMPointer: ; ce83c + ld l, a + ld h, 0 + ld de, BattleAnimOAMData + add hl, hl + add hl, hl + add hl, de + ret + +; ce846 + +LoadBattleAnimObj: ; ce846 (33:6846) + push hl + ld l, a + ld h, 0 + add hl, hl + add hl, hl + ld de, AnimObjGFX + add hl, de + ld c, [hl] + inc hl + ld b, [hl] + inc hl + ld a, [hli] + ld h, [hl] + ld l, a + pop de + push bc + call DecompressRequest2bpp + pop bc + ret + +; ce85e (33:685e) diff --git a/battle/trainer_huds.asm b/battle/trainer_huds.asm index 0ac043d44..7a5e17bdd 100755 --- a/battle/trainer_huds.asm +++ b/battle/trainer_huds.asm @@ -1,9 +1,3 @@ -wPlaceBallsDirection EQU $d003 -wTrainerHUDTiles EQU $d004 -wPlaceBallsX EQU $cfc4 -wPlaceBallsY EQU $cfc5 -GLOBAL wPlaceBallsDirection, wTrainerHUDTiles, wPlaceBallsX, wPlaceBallsY - BattleStart_TrainerHuds: ; 2c000 ld a, $e4 ld [rOBP0], a diff --git a/engine/credits.asm b/engine/credits.asm index 502c85768..77080b8b4 100644 --- a/engine/credits.asm +++ b/engine/credits.asm @@ -1,9 +1,5 @@ INCLUDE "includes.asm" -wCreditsBorderFrame EQU $cf64 -wCreditsBorderMon EQU $cf65 -wCreditsLYOverride EQU $cf66 - SECTION "Credits", ROMX, BANK[CREDITS] const_def diff --git a/engine/pack.asm b/engine/pack.asm index 237f5f786..dc29a6994 100644 --- a/engine/pack.asm +++ b/engine/pack.asm @@ -1,6 +1,3 @@ -wCurrPocket EQU $cf65 - - Pack: ; 10000 ld hl, Options set NO_TEXT_SCROLL, [hl] @@ -1532,14 +1532,18 @@ wMomBankDigitCursorPosition:: wIntroSceneFrameCounter:: wHoldingUnownPuzzlePiece:: wCardFlipCursorY:: +wCreditsBorderFrame:: wcf64:: ds 1 IF !DEF(CRYSTAL11) wPokedexStatus:: ENDC +wCreditsBorderMon:: wTitleScreenTimerLo:: wUnownPuzzleCursorPosition:: wCardFlipCursorX:: +wCurrPocket:: wcf65:: ds 1 +wCreditsLYOverride:: wTitleScreenTimerHi:: wUnownPuzzleHeldPiece:: wCardFlipWhichCard:: @@ -1679,8 +1683,11 @@ FXAnimID:: FXAnimIDLo:: ; cfc2 ds 1 FXAnimIDHi:: ; cfc3 - ds 3 - + ds 1 +wPlaceBallsX:: ; cfc4 + ds 1 +wPlaceBallsY:: ; cfc5 + ds 1 TileAnimationTimer:: ; cfc6 ds 1 @@ -1795,11 +1802,13 @@ LuckyNumberDigit2Buffer:: PhoneCallerLo:: wNextRadioLine:: wMovementBufferPerson:: +wPlaceBallsDirection:: ds 1 wd004:: LuckyNumberDigit3Buffer:: PhoneCallerHi:: wRadioTextDelay:: +wTrainerHUDTiles:: ds 1 wd005:: LuckyNumberDigit4Buffer:: |