diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-02 21:26:20 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-02 21:26:20 -0400 |
commit | 04883f4bf9fa6c0bf935f1aac95d5d48abe3bb30 (patch) | |
tree | 3ff95e7bbb62d0decfb9e2cba9e3d54f61013706 /home/init.asm | |
parent | 956d010d59ad225bea768aec172ccb56977b1775 (diff) | |
parent | 5fb7140613d6ea00ec1964fde18418c6257c2e27 (diff) |
Merge branch 'master' into build_more_roms
Diffstat (limited to 'home/init.asm')
-rw-r--r-- | home/init.asm | 221 |
1 files changed, 111 insertions, 110 deletions
diff --git a/home/init.asm b/home/init.asm index 5498b35..ef4b745 100644 --- a/home/init.asm +++ b/home/init.asm @@ -1,8 +1,8 @@ INCLUDE "constants.asm" SECTION "Entry point", ROM0[$100] - nop - jp Init + nop + jp Init SECTION "Global check value", ROM0[$14E] ; The ROM has an incorrect global check, so set it here @@ -25,121 +25,122 @@ endc SECTION "Init", ROM0[$52F] 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 [wcc38], 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 + 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 [wcc38], 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 ??? - ld a, $4B ; TODO: add predefs so the line above can be uncommented - call Predef - 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 + 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 ??? + ld a, $4B ; TODO: add predefs so the line above can be uncommented + call Predef + 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 + ld hl, VRAM_Begin + ld bc, VRAM_End - VRAM_Begin + xor a + call ByteFill + ret BlankBGMap: - ld a, $7F - jr _FillBGMap + ld a, $7f + jr _FillBGMap FillBGMap: - ld a, l + ld a, l + ; fallthrough _FillBGMap: - ld de, $400 - ld l, e + 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 + ld [hli], a + dec e + jr nz, .loop + dec d + jr nz, .loop + ret |