Split bank 7

This commit is contained in:
ElectroDeoxys
2023-05-12 00:35:30 +01:00
parent 635e4c3c34
commit e06e485c0a
8 changed files with 271 additions and 271 deletions

View File

@@ -0,0 +1,67 @@
Func_1c865:
ret
; debug function
; adjusts hSCX and hSCY by using the arrow keys
; pressing B makes it scroll faster
Func_1c866: ; unreferenced
ldh a, [hKeysHeld]
and B_BUTTON
call nz, .asm_1c86d ; executes following part twice
.asm_1c86d
ldh a, [hSCX]
ld b, a
ldh a, [hSCY]
ld c, a
ldh a, [hKeysHeld]
bit D_UP_F, a
jr z, .check_d_down
inc c
.check_d_down
bit D_DOWN_F, a
jr z, .check_d_left
dec c
.check_d_left
bit D_LEFT_F, a
jr z, .check_d_right
inc b
.check_d_right
bit D_RIGHT_F, a
jr z, .asm_1c889
dec b
.asm_1c889
ld a, b
ldh [hSCX], a
ld a, c
ldh [hSCY], a
ret
; sets some flags on a given sprite
Func_1c890: ; unreferenced
ld a, [wVBlankCounter]
and %111111
ret nz
ld a, [wd41b]
cp $11
jr z, .asm_1c8a3
cp $0e
ret c
cp $10
ret nc
; wd41b == $11 || (wd41b >= $0e && wd41b < $10)
.asm_1c8a3
ld a, [wd41c]
ld [wWhichSprite], a
ld c, SPRITE_ANIM_FLAGS
call GetSpriteAnimBufferProperty
call UpdateRNGSources
and (1 << SPRITE_ANIM_FLAG_X_SUBTRACT)
jr nz, .asm_1c8b9
res SPRITE_ANIM_FLAG_SPEED, [hl]
jr .asm_1c8bb
.asm_1c8b9
set SPRITE_ANIM_FLAG_SPEED, [hl]
.asm_1c8bb
ret

View File

@@ -0,0 +1,55 @@
ClearMasterBeatenList:
push hl
push bc
ld c, $a
ld hl, wMastersBeatenList
xor a
.loop
ld [hli], a
dec c
jr nz, .loop
pop bc
pop hl
ret
; writes Master in register a to
; first empty slot in wMastersBeatenList
AddMasterBeatenToList:
push hl
push bc
ld b, a
ld c, $a
ld hl, wMastersBeatenList
.loop
ld a, [hl]
or a
jr z, .found_empty_slot
cp b
jr z, .exit
inc hl
dec c
jr nz, .loop
debug_nop
jr .exit
.found_empty_slot
ld a, b
ld [hl], a
.exit
pop bc
pop hl
ret
; iterates all masters and attempts to
; add each of them to wMastersBeatenList
AddAllMastersToMastersBeatenList:
ld a, $01
.loop
push af
call AddMasterBeatenToList
pop af
inc a
cp $0b
jr c, .loop
ret

View File

@@ -0,0 +1,50 @@
JumpSetWindowOff:
jp SetWindowOff
; debug function
; prints player's coordinates by pressing B
; and draws palettes by pressing A
Func_1c003: ; unreferenced
ld a, [wCurMap]
or a
jr z, JumpSetWindowOff
ld a, [wOverworldMode]
cp OWMODE_START_SCRIPT
jr nc, JumpSetWindowOff
ldh a, [hKeysHeld]
ld b, a
and A_BUTTON | B_BUTTON
cp b
jr nz, JumpSetWindowOff
and B_BUTTON
jr z, JumpSetWindowOff
ld bc, $20
ld a, [wPlayerXCoord]
bank1call WriteTwoByteNumberInTxSymbolFormat
ld bc, $320
ld a, [wPlayerYCoord]
bank1call WriteTwoByteNumberInTxSymbolFormat
ld a, $77
ldh [hWX], a
ld a, $88
ldh [hWY], a
ldh a, [hKeysPressed]
and A_BUTTON
jr z, .skip_load_scene
ld a, SCENE_COLOR_PALETTE
lb bc, 0, 33
call LoadScene
.skip_load_scene
ldh a, [hKeysHeld]
and A_BUTTON
jr z, .set_wd_on
ld a, $67
ldh [hWX], a
ld a, $68
ldh [hWY], a
.set_wd_on
call SetWindowOn
ret

View File

@@ -0,0 +1,43 @@
; loads data from the map header of wCurMap
LoadMapHeader:
push hl
push bc
push de
ld a, [wCurMap]
add a
ld c, a
add a
add c
ld c, a
ld b, 0
ld hl, MapHeaders
add hl, bc
ld a, [hli]
ld [wCurTilemap], a
ld a, [hli]
ld c, a ; CGB tilemap variant
ld a, [hli]
ld [wCurMapInitialPalette], a ; always 0?
ld a, [hli]
ld [wCurMapSGBPals], a
ld a, [hli]
ld [wCurMapPalette], a
ld a, [hli]
ld [wDefaultSong], a
ld a, [wConsole]
cp CONSOLE_CGB
jr nz, .got_tilemap
; use CGB variant, if valid
ld a, c
or a
jr z, .got_tilemap
ld [wCurTilemap], a
.got_tilemap
pop de
pop bc
pop hl
ret
INCLUDE "data/map_headers.asm"

View File

@@ -1,148 +1,3 @@
JumpSetWindowOff:
jp SetWindowOff
; debug function
; prints player's coordinates by pressing B
; and draws palettes by pressing A
Func_1c003: ; unreferenced
ld a, [wCurMap]
or a
jr z, JumpSetWindowOff
ld a, [wOverworldMode]
cp OWMODE_START_SCRIPT
jr nc, JumpSetWindowOff
ldh a, [hKeysHeld]
ld b, a
and A_BUTTON | B_BUTTON
cp b
jr nz, JumpSetWindowOff
and B_BUTTON
jr z, JumpSetWindowOff
ld bc, $20
ld a, [wPlayerXCoord]
bank1call WriteTwoByteNumberInTxSymbolFormat
ld bc, $320
ld a, [wPlayerYCoord]
bank1call WriteTwoByteNumberInTxSymbolFormat
ld a, $77
ldh [hWX], a
ld a, $88
ldh [hWY], a
ldh a, [hKeysPressed]
and A_BUTTON
jr z, .skip_load_scene
ld a, SCENE_COLOR_PALETTE
lb bc, 0, 33
call LoadScene
.skip_load_scene
ldh a, [hKeysHeld]
and A_BUTTON
jr z, .set_wd_on
ld a, $67
ldh [hWX], a
ld a, $68
ldh [hWY], a
.set_wd_on
call SetWindowOn
ret
_HandleMapWarp::
push hl
push bc
push de
ld a, [wCurMap]
add a
ld c, a
ld b, $0
ld hl, WarpDataPointers
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld bc, $5
ld a, [wPlayerXCoord]
ld d, a
ld a, [wPlayerYCoord]
ld e, a
.loop_warp_list
ld a, [hli]
or [hl]
jr z, .done ; end of warp data
ld a, [hld] ; y coord
cp e
jr nz, .next_warp
ld a, [hl] ; x coord
cp d
jr z, .warp_player
.next_warp
add hl, bc
jr .loop_warp_list
.warp_player
inc hl
inc hl
ld a, [hli]
ld [wTempMap], a
ld a, [hli]
ld [wTempPlayerXCoord], a
ld a, [hli]
ld [wTempPlayerYCoord], a
ld a, [wPlayerDirection]
ld [wTempPlayerDirection], a
.done
pop de
pop bc
pop hl
ret
INCLUDE "data/warps.asm"
; loads data from the map header of wCurMap
LoadMapHeader:
push hl
push bc
push de
ld a, [wCurMap]
add a
ld c, a
add a
add c
ld c, a
ld b, 0
ld hl, MapHeaders
add hl, bc
ld a, [hli]
ld [wCurTilemap], a
ld a, [hli]
ld c, a ; CGB tilemap variant
ld a, [hli]
ld [wCurMapInitialPalette], a ; always 0?
ld a, [hli]
ld [wCurMapSGBPals], a
ld a, [hli]
ld [wCurMapPalette], a
ld a, [hli]
ld [wDefaultSong], a
ld a, [wConsole]
cp CONSOLE_CGB
jr nz, .got_tilemap
; use CGB variant, if valid
ld a, c
or a
jr z, .got_tilemap
ld [wCurTilemap], a
.got_tilemap
pop de
pop bc
pop hl
ret
INCLUDE "data/map_headers.asm"
ClearNPCs:
push hl
push bc
@@ -887,127 +742,3 @@ UpdateNPCPosition:
pop bc
pop hl
ret
ClearMasterBeatenList:
push hl
push bc
ld c, $a
ld hl, wMastersBeatenList
xor a
.loop
ld [hli], a
dec c
jr nz, .loop
pop bc
pop hl
ret
; writes Master in register a to
; first empty slot in wMastersBeatenList
AddMasterBeatenToList:
push hl
push bc
ld b, a
ld c, $a
ld hl, wMastersBeatenList
.loop
ld a, [hl]
or a
jr z, .found_empty_slot
cp b
jr z, .exit
inc hl
dec c
jr nz, .loop
debug_nop
jr .exit
.found_empty_slot
ld a, b
ld [hl], a
.exit
pop bc
pop hl
ret
; iterates all masters and attempts to
; add each of them to wMastersBeatenList
AddAllMastersToMastersBeatenList:
ld a, $01
.loop
push af
call AddMasterBeatenToList
pop af
inc a
cp $0b
jr c, .loop
ret
Func_1c865:
ret
; debug function
; adjusts hSCX and hSCY by using the arrow keys
; pressing B makes it scroll faster
Func_1c866: ; unreferenced
ldh a, [hKeysHeld]
and B_BUTTON
call nz, .asm_1c86d ; executes following part twice
.asm_1c86d
ldh a, [hSCX]
ld b, a
ldh a, [hSCY]
ld c, a
ldh a, [hKeysHeld]
bit D_UP_F, a
jr z, .check_d_down
inc c
.check_d_down
bit D_DOWN_F, a
jr z, .check_d_left
dec c
.check_d_left
bit D_LEFT_F, a
jr z, .check_d_right
inc b
.check_d_right
bit D_RIGHT_F, a
jr z, .asm_1c889
dec b
.asm_1c889
ld a, b
ldh [hSCX], a
ld a, c
ldh [hSCY], a
ret
; sets some flags on a given sprite
Func_1c890: ; unreferenced
ld a, [wVBlankCounter]
and %111111
ret nz
ld a, [wd41b]
cp $11
jr z, .asm_1c8a3
cp $0e
ret c
cp $10
ret nc
; wd41b == $11 || (wd41b >= $0e && wd41b < $10)
.asm_1c8a3
ld a, [wd41c]
ld [wWhichSprite], a
ld c, SPRITE_ANIM_FLAGS
call GetSpriteAnimBufferProperty
call UpdateRNGSources
and (1 << SPRITE_ANIM_FLAG_X_SUBTRACT)
jr nz, .asm_1c8b9
res SPRITE_ANIM_FLAG_SPEED, [hl]
jr .asm_1c8bb
.asm_1c8b9
set SPRITE_ANIM_FLAG_SPEED, [hl]
.asm_1c8bb
ret

View File

@@ -0,0 +1,49 @@
_HandleMapWarp::
push hl
push bc
push de
ld a, [wCurMap]
add a
ld c, a
ld b, $0
ld hl, WarpDataPointers
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld bc, $5
ld a, [wPlayerXCoord]
ld d, a
ld a, [wPlayerYCoord]
ld e, a
.loop_warp_list
ld a, [hli]
or [hl]
jr z, .done ; end of warp data
ld a, [hld] ; y coord
cp e
jr nz, .next_warp
ld a, [hl] ; x coord
cp d
jr z, .warp_player
.next_warp
add hl, bc
jr .loop_warp_list
.warp_player
inc hl
inc hl
ld a, [hli]
ld [wTempMap], a
ld a, [hli]
ld [wTempPlayerXCoord], a
ld a, [hli]
ld [wTempPlayerYCoord], a
ld a, [wPlayerDirection]
ld [wTempPlayerDirection], a
.done
pop de
pop bc
pop hl
ret
INCLUDE "data/warps.asm"

View File

@@ -50,7 +50,7 @@ INCLUDE "engine/save.asm"
SECTION "Map Scripts", ROMX
INCLUDE "data/map_scripts.asm"
INCLUDE "engine/overworld/npcs.asm"
INCLUDE "engine/overworld/npc_data.asm"
INCLUDE "data/duel/duel_configurations.asm"
INCLUDE "data/script_table.asm"
INCLUDE "data/multichoice.asm"
@@ -124,7 +124,12 @@ SECTION "Auto Deck Machines", ROMX
INCLUDE "engine/auto_deck_machines.asm"
SECTION "Bank 7", ROMX
INCLUDE "engine/bank07.asm"
INCLUDE "engine/overworld/debug_player_coordinates.asm"
INCLUDE "engine/overworld/warp.asm"
INCLUDE "engine/overworld/load_map_header.asm"
INCLUDE "engine/overworld/npc_core.asm"
INCLUDE "engine/masters_beaten_list.asm"
INCLUDE "engine/debug_sprites.asm"
SECTION "Duel Animations", ROMX
INCLUDE "engine/duel/animations/core.asm"