pokegold-spaceworld/engine/debug/field/vram_viewer.inc
Zumi 44cdca9cdd
(Partially) dump banks $0D and $0F (#99)
* Bank $0f dumping (will not build)

* Optimize title logo graphic

* Make buildable again

* Add some more labels to bank $0f

* Add bank $0d, non-building

* fix erroneous shim

* bank $0D dump buildable

* Make buildable again

---------

Co-authored-by: vulcandth <vulcandth@gmail.com>
2023-11-17 21:40:28 -06:00

273 lines
3.8 KiB
PHP

FieldDebug_DoVRAMViewer:
call LoadStandardMenuHeader
call ClearTileMap
call ClearSprites
ldh a, [hMapAnims]
push af
xor a
ldh [hMapAnims], a
ld a, 1
ld [wcdc3], a
call .GenerateTilemap
call WaitBGMap
call .DoViewer
pop af
ldh [hMapAnims], a
ld a, $e3
ldh [rLCDC], a
call .ReloadDefaultGFX
call CloseWindow
ld a, FIELDDEBUG_RETURN_REOPEN
ret
.DoViewer:
ld a, [wcdc3]
dec a
ld hl, .Jumptable
call CallJumptable
call .GenerateTilemap
call .ScreenControl
jr nc, .DoViewer
ret
.ScreenControl:
call WaitBGMap
.wait_input
call GetJoypad
ldh a, [hJoyDown]
and A_BUTTON | B_BUTTON | START | D_RIGHT | D_LEFT
jr z, .wait_input
bit D_LEFT_F, a
jr nz, .next_page
bit D_RIGHT_F, a
jr nz, .previous_page
bit START_F, a
jr nz, .switch_tileset
bit A_BUTTON_F, a
ret nz
scf
ret
.switch_tileset
ldh a, [rLCDC]
xor (1 << rLCDC_TILE_DATA)
ldh [rLCDC], a
and a
ret
.next_page
ld hl, wcdc3
inc [hl]
ld a, [hl]
cp 8
jr c, .not_at_end
ld [hl], 1
.not_at_end
and a
ret
.previous_page
ld hl, wcdc3
dec [hl]
jr z, .not_at_start
and a
ret
.not_at_start
ld [hl], 7
and a
ret
.Jumptable:
dw .LoadTilesets1
dw .LoadBagGFX
dw .LoadTilesetsCommon
dw .LoadToolgearGFX
dw .ReloadDefaultGFX
dw .LoadStatsGFX
dw .LoadTilesets6
.GenerateTilemap:
hlcoord 1, 1
ld de, 4
ld b, $10
xor a
.generate_loop1
ld c, $10
.generate_loop2
ld [hli], a
inc a
dec c
jr nz, .generate_loop2
add hl, de
dec b
jr nz, .generate_loop1
ret
.ReloadDefaultGFX:
call .LoadTilesetsCommon
call LoadFont
ret
.LoadBagGFX:
call .LoadTilesetsCommon
call DisableLCD
call LoadFont
callab LoadBackpackGraphics
call EnableLCD
ret
.LoadToolgearGFX:
call .LoadTilesetsCommon
call LoadToolgearGraphics
ret
.LoadTilesets1:
call .LoadTilesetsCommon
call DisableLCD
call LoadFontsBattleExtra
call LoadFont
call EnableLCD
ret
.LoadStatsGFX:
call .LoadTilesetsCommon
call DisableLCD
call LoadFontsBattleExtra
call LoadFont
callab LoadPokemonStatsGraphics
xor a
ldh [hMapAnims], a
call EnableLCD
ld de, vTileset
call .LoadPokemon
ret
.LoadTilesets6:
call DisableLCD
xor a
ld hl, vSprites
ld bc, $180 tiles
call ByteFill
call LoadFont
callab Call_LoadBattleGraphics
xor a
ldh [hMapAnims], a
call EnableLCD
ld de, vTileset
call .LoadPokemon
ld de, $9310
ld a, 3
ld [wcdd8], a
predef Function3f04a
ret
.LoadPokemon:
ld a, 3
ld [wce37], a
ld [wMonDexIndex], a
call GetMonHeader
call LoadMonFrontSprite
ret
.LoadTilesetsCommon:
call DisableLCD
xor a
ld hl, vSprites
ld bc, $180 tiles
call ByteFill
call LoadTilesetGFX
ld a, 1
ldh [hMapAnims], a
callab LoadUsedSpritesGfx
call LoadFontExtra
call EnableLCD
ret
FieldDebug_DoClearEventFlags:
ld hl, .MenuHeader
call LoadMenuHeader
call VerticalMenu
call CloseWindow
ret c
call .CheckMapFlags
jr nc, .no_flags
ld a, [wMenuCursorY]
cp 1
ld a, 0
jr z, .done
ld a, $ff
.done
ld [de], a
ret
.no_flags
ld hl, .NoMapFlagsText
call MenuTextBoxBackup
ret
.NoMapFlagsText:
text "このマップは シーケンスの"
line "とうろくが ありません"
prompt
.MenuHeader:
db MENU_BACKUP_TILES
menu_coords 0, 0, 12, 6
dw .MenuData
db 1
.MenuData:
db STATICMENU_CURSOR
db 2
db "フラグを クりア@"
db "フラグを うめる@"
.CheckMapFlags:
ld a, [wMapGroup]
ld b, a
ld a, [wMapId]
ld c, a
ld hl, UnknownMapBufferPointers
.determine_loop
push hl
ld a, BANK(UnknownMapBufferPointers)
call GetFarByte
cp -1
jr z, .none_found
cp b
jr nz, .determine_loop2
inc hl
ld a, BANK(UnknownMapBufferPointers)
call GetFarByte
cp c
jr nz, .determine_loop2
jr .has_flags
.determine_loop2
pop hl
ld de, 8
add hl, de
jr .determine_loop
.has_flags
pop hl
ld de, 6
add hl, de
ld a, BANK(UnknownMapBufferPointers)
call GetFarByte
ld e, a
inc hl
ld a, BANK(UnknownMapBufferPointers)
call GetFarByte
ld d, a
scf
ret
.none_found
pop hl
and a
ret