diff options
Diffstat (limited to 'engine/main/draw_sprites/draw_blue_field_sprites.asm')
-rwxr-xr-x | engine/main/draw_sprites/draw_blue_field_sprites.asm | 401 |
1 files changed, 401 insertions, 0 deletions
diff --git a/engine/main/draw_sprites/draw_blue_field_sprites.asm b/engine/main/draw_sprites/draw_blue_field_sprites.asm new file mode 100755 index 0000000..756971a --- /dev/null +++ b/engine/main/draw_sprites/draw_blue_field_sprites.asm @@ -0,0 +1,401 @@ +DrawSpritesBlueFieldTop: ; 0x1f330
+ ld bc, $7f00
+ callba DrawTimer
+ call Func_1f395
+ call Func_1f3e1
+ call Func_1f408
+ call Func_1f428
+ callba DrawPinball
+ call Func_1f48f
+ call Func_1f4f8
+ ret
+
+DrawSpritesBlueFieldBottom: ; 0x1f35a
+ ld bc, $7f00
+ callba DrawTimer
+ callba DrawMonCaptureAnimation
+ call DrawAnimatedMon_BlueStage
+ call DrawPikachuSavers_BlueStage
+ callba DrawFlippers
+ callba DrawPinball
+ call Func_1f4a3
+ call Func_1f509
+ call Func_1f55e
+ ret
+
+Func_1f395: ; 0x1f395
+ ld de, wd4cd
+ ld hl, Data_1f3cf
+ call Func_1f3ad
+ ld de, wd4d0
+ ld hl, Data_1f3d5
+ call Func_1f3ad
+ ld de, wd4d3
+ ld hl, Data_1f3db
+ ; fall through
+
+Func_1f3ad: ; 0x1f3ad
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [wd4d7]
+ sub [hl]
+ inc hl
+ jr z, .asm_1f3c4
+ ld a, $0
+ jr .asm_1f3c6
+
+.asm_1f3c4
+ ld a, $1
+.asm_1f3c6
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+Data_1f3cf:
+ db $48, $2D ; background scroll offsets (x, y)
+ db $01
+ db $E0, $E1, $E0 ; OAM ids
+
+Data_1f3d5:
+ db $33, $3E ; background scroll offsets (x, y)
+ db $00
+ db $E0, $E1, $E0 ; OAM ids
+
+Data_1f3db:
+ db $5D, $3E ; background scroll offsets (x, y)
+ db $02
+ db $E0, $E1, $E0 ; OAM ids
+
+Func_1f3e1: ; 0x1f3e1
+ ld a, $8a
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $53
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd50a]
+ srl a
+ srl a
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1f402
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_1f402:
+ db $E8, $E9, $EA, $EB, $EC, $ED
+
+Func_1f408: ; 0x1f408
+ ld a, $18
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $5f
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd633]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1f425
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_1f425:
+ db $E2, $E3, $E4
+
+Func_1f428: ; 0x1f428
+ ld a, $70
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $59
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd638]
+ ld e, a
+ ld d, $0
+ ld hl, OAMIds_1f445
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+OAMIds_1f445:
+ db $E5, $E6, $E7
+
+DrawPikachuSavers_BlueStage: ; 0x1f448
+ ld a, [hSCX]
+ ld d, a
+ ld a, [hSCY]
+ ld e, a
+ ld a, [wd51d]
+ and a
+ ld a, [wd518]
+ jr z, .asm_1f473
+ ld a, [wd51c]
+ and a
+ jr nz, .asm_1f469
+ ld a, [hNumFramesDropped]
+ srl a
+ srl a
+ srl a
+ and $1
+ jr .asm_1f473
+
+.asm_1f469
+ ld a, [wd4b4]
+ cp $50
+ ld a, $1
+ jr nc, .asm_1f473
+ xor a
+.asm_1f473
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, PikachuSaverOAMOffsets_BlueStage
+ add hl, bc
+ ld a, [hli]
+ sub d
+ ld b, a
+ ld a, [hli]
+ sub e
+ ld c, a
+ ld a, [wPikachuSaverAnimationFrame]
+ add $e
+ call LoadOAMData
+ ret
+
+PikachuSaverOAMOffsets_BlueStage:
+ dw $7E0F
+ dw $7E92
+
+Func_1f48f: ; 0x1f48f
+ ld a, [wd551]
+ and a
+ ret nz
+ ld a, [hNumFramesDropped]
+ bit 4, a
+ ret z
+ ld de, wIndicatorStates + 5
+ ld hl, OAMDataTable_1f4ce
+ ld b, $6
+ jr asm_1f4b5
+
+Func_1f4a3: ; 0x1f4a3
+ ld a, [wd551]
+ and a
+ ret nz
+ ld a, [hNumFramesDropped]
+ bit 4, a
+ ret z
+ ld de, wIndicatorStates + 11
+ ld hl, OAMDataTable_1f4e0
+ ld b, $8
+asm_1f4b5:
+ push bc
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [de]
+ and a
+ ld a, [hli]
+ call nz, LoadOAMData
+ pop bc
+ inc de
+ dec b
+ jr nz, asm_1f4b5
+ ret
+
+OAMDataTable_1f4ce: ; 0x1f4ce
+ ; Each entry is:
+ ; [OAM x/y Offsets],[OAM Id]
+ db $0D, $37
+ db $EE
+
+ db $35, $0D
+ db $F1
+
+ db $8E, $4E
+ db $F4
+
+ db $36, $64
+ db $EF
+
+ db $4C, $49
+ db $EE
+
+ db $61, $64
+ db $F0
+
+OAMDataTable_1f4e0: ; 0x1f4e0
+ ; Each entry is 3 bytes:
+ ; [OAM x/y Offsets],[OAM Id]
+ db $2D, $13
+ db $32
+
+ db $6A, $13
+ db $33
+
+ db $25, $2D
+ db $34
+
+ db $73, $2D
+ db $35
+
+ db $38, $14
+ db $36
+
+ db $66, $14
+ db $36
+
+ db $79, $40
+ db $37
+
+ db $89, $40
+ db $37
+
+Func_1f4f8: ; 0x1f4f8
+ ld a, [wd551]
+ and a
+ ret z
+ ld de, wd566
+ ld hl, OAMOffsetsTable_1f53a
+ ld b, $c
+ ld c, $47
+ jr asm_1f518
+
+Func_1f509: ; 0x1f509
+ ld a, [wd551]
+ and a
+ ret z
+ ld de, wd572
+ ld hl, OAMOffsetsTable_1f552
+ ld b, $6
+ ld c, $40
+asm_1f518: ; 0x1f518
+ push bc
+ ld a, [de]
+ add c
+ cp c
+ push af
+ ld a, [hSCX]
+ ld b, a
+ ld a, [hli]
+ sub b
+ ld b, a
+ ld a, [hSCY]
+ ld c, a
+ ld a, [hli]
+ sub c
+ ld c, a
+ ld a, [hNumFramesDropped]
+ and $e
+ jr nz, .asm_1f530
+ dec c
+.asm_1f530
+ pop af
+ call nz, LoadOAMData
+ pop bc
+ inc de
+ dec b
+ jr nz, asm_1f518
+ ret
+
+OAMOffsetsTable_1f53a: ; 0x1f53a
+; OAM data x, y offsets
+ db $4C, $08
+ db $2B, $12
+ db $6D, $12
+ db $15, $25
+ db $82, $25
+ db $0D, $3F
+ db $4C, $7F
+ db $8B, $3F
+ db $0A, $65
+ db $36, $7F
+ db $61, $7F
+ db $8D, $65
+
+OAMOffsetsTable_1f552: ; 0x1f552
+; OAM data x, y offsets
+ db $3B, $12
+ db $5D, $12
+ db $31, $16
+ db $67, $16
+ db $25, $2C
+ db $73, $2C
+
+Func_1f55e: ; 0x1f55e
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wd606]
+ inc a
+ ld [wd606], a
+ ld a, $40
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $1
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd606]
+ srl a
+ srl a
+ srl a
+ and $3
+ add $4f
+ cp $52
+ call nz, LoadOAMData
+ ret
+
+DrawAnimatedMon_BlueStage: ; 0x1f58b
+ ld a, [wWildMonIsHittable]
+ and a
+ ret z
+ ld a, $50
+ ld hl, hSCX
+ sub [hl]
+ ld b, a
+ ld a, $3e
+ ld hl, hSCY
+ sub [hl]
+ ld c, a
+ ld a, [wd5bd]
+ ld e, a
+ ld d, $0
+ ld hl, AnimatedMonOAMIds_BlueStage
+ add hl, de
+ ld a, [hl]
+ call LoadOAMData
+ ret
+
+AnimatedMonOAMIds_BlueStage:
+ db $26, $27, $28, $29, $2A, $2B, $2C, $2D, $2E, $2F, $30, $31
|