pokegold-spaceworld/home/init.asm
2018-08-16 03:00:01 -06:00

144 lines
2.1 KiB
NASM

INCLUDE "constants.asm"
SECTION "home/init.asm@Entry point", ROM0
nop
jp Init
SECTION "home/init.asm@Global check value", ROM0
; To work around a bug in rgbfix v0.3.7.
dw 0
SECTION "home/init.asm@Init", ROM0
Reset: ; 51c (0:051c)
call DisableAudio
call ClearPalettes
ei
ld hl, wJoypadFlags
set 7, [hl]
ld c, 32
call DelayFrames
jr Init
Init: ; 052f
di
xor a
ld [rIF], a
ld [rIE], a
ld [rSCX], a
ld [rSCY], a
ld [rSB], a
ld [rSC], a
ld [rWX], a
ld [rWY], a
ld [rBGP], a
ld [rOBP0], a
ld [rOBP1], a
ld [rTMA], a
ld [rTAC], a
ld [wTitleSequenceOpeningType], a ; Useless, since WRAM gets cleared right after
ld a, 1 << rTAC_ON | rTAC_4096_HZ
ld [rTAC], a
ld a, 1 << rLCDC_ENABLE
ld [rLCDC], a
call DisableLCD
ld sp, wStackBottom
call ClearVRAM
ld hl, WRAM0_Begin
ld bc, WRAM1_End - WRAM0_Begin
.ByteFill ; 0565
ld [hl], 0
inc hl
dec bc
ld a, b
or c
jr nz, .ByteFill
ld hl, HRAM_Begin
ld bc, HRAM_End - HRAM_Begin
call ByteFill
call ClearSprites
ld a, BANK(WriteOAMDMACodeToHRAM)
call Bankswitch
call WriteOAMDMACodeToHRAM
xor a
ldh [hMapAnims], a
ldh [hSCX], a
ldh [hSCY], a
ldh [rJOYP], a
ld a, 1 << rSTAT_HBLANK
ld [rSTAT], a
ld a, SCREEN_HEIGHT_PX
ldh [hWY], a
ld [rWY], a
ld a, 7
ldh [hWX], a
ld [rWX], a
ld a, $ff
ldh [hLinkPlayerNumber], a
ld h, HIGH($9800)
call BlankBGMap
ld h, HIGH($9C00)
call BlankBGMap
ld a, LCDC_DEFAULT
ld [rLCDC], a
call DisableAudio
call _2007
predef CheckSGB
ld a, $1F
ld [rIE], a
ld a, HIGH($9C00)
ldh [hBGMapAddress + 1], a
xor a
ldh [hBGMapAddress], a
call DisableLCD
call ClearVRAM
ld a, LCDC_DEFAULT
ld [rLCDC], a
ei
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RTC_DH
ld [MBC3SRamBank], a
xor a
ld [SRAM_Begin], a
ld a, 0 ; Useless
ld [MBC3LatchClock], a
ld [MBC3SRamEnable], a
jp GameInit
ClearVRAM: ; 05e6
ld hl, VRAM_Begin
ld bc, VRAM_End - VRAM_Begin
xor a
call ByteFill
ret
BlankBGMap:
ld a, $7f
jr _FillBGMap
FillBGMap:
ld a, l
; fallthrough
_FillBGMap:
ld de, BG_MAP_WIDTH * BG_MAP_HEIGHT
ld l, e
.loop
ld [hli], a
dec e
jr nz, .loop
dec d
jr nz, .loop
ret