shithub: pokecrystal

Download patch

ref: 99d2ee2bdc0c3ed7206a91bbeee61b32c83584ca
parent: 4b0889b3962fa48d0ddf07de5880151cbe735065
author: yenatch <[email protected]>
date: Mon Aug 19 23:26:37 EDT 2013

split out program init

--- /dev/null
+++ b/engine/init.asm
@@ -1,0 +1,225 @@
+Reset: ; 150
+	di
+	call CleanSoundRestart
+	xor a
+	ld [$ffde], a
+	call ClearPalettes
+	xor a
+	ld [rIF], a
+	ld a, 1 ; VBlank int
+	ld [rIE], a
+	ei
+
+	ld hl, $cfbe
+	set 7, [hl]
+
+	ld c, 32
+	call DelayFrames
+
+	jr Init
+; 16e
+
+
+_Start: ; 16e
+	cp $11
+	jr z, .asm_175
+	xor a
+	jr .asm_177
+
+.asm_175
+	ld a, $1
+
+.asm_177
+	ld [hCGB], a
+	ld a, $1
+	ld [$ffea], a
+; 17d
+
+
+Init: ; 17d
+
+	di
+
+	xor a
+	ld [rIF], a
+	ld [rIE], a
+	ld [rRP], 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 [$d000], a
+
+	ld a, %100 ; Start timer at 4096Hz
+	ld [rTAC], a
+
+.wait
+	ld a, [rLY]
+	cp 145
+	jr nz, .wait
+
+	xor a
+	ld [rLCDC], a
+
+; Clear WRAM bank 0
+	ld hl, $c000
+	ld bc, $d000 - $c000
+.asm_1b1
+	ld [hl], 0
+	inc hl
+	dec bc
+	ld a, b
+	or c
+	jr nz, .asm_1b1
+
+	ld sp, Stack - 1
+
+; Clear HRAM
+	ld a, [hCGB]
+	push af
+	ld a, [$ffea]
+	push af
+	xor a
+	ld hl, $ff80
+	ld bc, $ffff - $ff80
+	call ByteFill
+	pop af
+	ld [$ffea], a
+	pop af
+	ld [hCGB], a
+
+	call ClearWRAM
+	ld a, 1
+	ld [rSVBK], a
+	call ClearVRAM
+	call ClearSprites
+	call Function270
+
+
+	ld a, BANK(LoadPushOAM)
+	rst Bankswitch
+
+	call LoadPushOAM
+
+	xor a
+	ld [$ffde], a
+	ld [hSCX], a
+	ld [hSCY], a
+	ld [rJOYP], a
+
+	ld a, $8 ; HBlank int enable
+	ld [rSTAT], a
+
+	ld a, $90
+	ld [hWY], a
+	ld [rWY], a
+
+	ld a, 7
+	ld [hWX], a
+	ld [rWX], a
+
+	ld a, %11100011
+	; LCD on
+	; Win tilemap 1
+	; Win on
+	; BG/Win tiledata 0
+	; BG Tilemap 0
+	; OBJ 8x8
+	; OBJ on
+	; BG on
+	ld [rLCDC], a
+
+	ld a, $ff
+	ld [$ffcb], a
+
+	callba Function9890
+
+	ld a, $9c
+	ld [$ffd7], a
+
+	xor a
+	ld [hBGMapAddress], a
+
+	callba StartClock
+
+	xor a
+	ld [MBC3LatchClock], a
+	ld [MBC3SRamEnable], a
+
+	ld a, [hCGB]
+	and a
+	jr z, .asm_22b
+	call Function2ff7
+.asm_22b
+
+	xor a
+	ld [rIF], a
+	ld a, %1111 ; VBlank, LCDStat, Timer, Serial interrupts
+	ld [rIE], a
+	ei
+
+	call DelayFrame
+
+	ld a, $30
+	call Predef
+
+	call CleanSoundRestart
+	xor a
+	ld [CurMusic], a
+	jp GameInit
+; 245
+
+
+ClearVRAM: ; 245
+; Wipe VRAM banks 0 and 1
+
+	ld a, 1
+	ld [rVBK], a
+	call .clear
+
+	xor a
+	ld [rVBK], a
+.clear
+	ld hl, VTiles0
+	ld bc, $2000
+	xor a
+	call ByteFill
+	ret
+; 25a
+
+ClearWRAM: ; 25a
+; Wipe swappable WRAM banks (1-7)
+
+	ld a, 1
+.asm_25c
+	push af
+	ld [rSVBK], a
+	xor a
+	ld hl, $d000
+	ld bc, $1000
+	call ByteFill
+	pop af
+	inc a
+	cp 8
+	jr nc, .asm_25c
+	ret
+; 270
+
+Function270: ; 270
+	ld a, $0
+	call GetSRAMBank
+	ld hl, $a000
+	ld bc, $0020
+	xor a
+	call ByteFill
+	call CloseSRAM
+	ret
+; 283
+
--- a/main.asm
+++ b/main.asm
@@ -56,231 +56,7 @@
 
 SECTION "start",HOME[$150]
 
-Reset: ; 150
-	di
-	call CleanSoundRestart
-	xor a
-	ld [$ffde], a
-	call ClearPalettes
-	xor a
-	ld [rIF], a
-	ld a, 1 ; VBlank int
-	ld [rIE], a
-	ei
-
-	ld hl, $cfbe
-	set 7, [hl]
-
-	ld c, 32
-	call DelayFrames
-
-	jr Init
-; 16e
-
-
-_Start: ; 16e
-	cp $11
-	jr z, .asm_175
-	xor a
-	jr .asm_177
-
-.asm_175
-	ld a, $1
-
-.asm_177
-	ld [hCGB], a
-	ld a, $1
-	ld [$ffea], a
-; 17d
-
-
-Init: ; 17d
-
-	di
-
-	xor a
-	ld [rIF], a
-	ld [rIE], a
-	ld [rRP], 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 [$d000], a
-
-	ld a, %100 ; Start timer at 4096Hz
-	ld [rTAC], a
-
-.wait
-	ld a, [rLY]
-	cp 145
-	jr nz, .wait
-
-	xor a
-	ld [rLCDC], a
-
-; Clear WRAM bank 0
-	ld hl, $c000
-	ld bc, $d000 - $c000
-.asm_1b1
-	ld [hl], 0
-	inc hl
-	dec bc
-	ld a, b
-	or c
-	jr nz, .asm_1b1
-
-	ld sp, Stack - 1
-
-; Clear HRAM
-	ld a, [hCGB]
-	push af
-	ld a, [$ffea]
-	push af
-	xor a
-	ld hl, $ff80
-	ld bc, $ffff - $ff80
-	call ByteFill
-	pop af
-	ld [$ffea], a
-	pop af
-	ld [hCGB], a
-
-	call ClearWRAM
-	ld a, 1
-	ld [rSVBK], a
-	call ClearVRAM
-	call ClearSprites
-	call Function270
-
-
-	ld a, BANK(LoadPushOAM)
-	rst Bankswitch
-
-	call LoadPushOAM
-
-	xor a
-	ld [$ffde], a
-	ld [hSCX], a
-	ld [hSCY], a
-	ld [rJOYP], a
-
-	ld a, $8 ; HBlank int enable
-	ld [rSTAT], a
-
-	ld a, $90
-	ld [hWY], a
-	ld [rWY], a
-
-	ld a, 7
-	ld [hWX], a
-	ld [rWX], a
-
-	ld a, %11100011
-	; LCD on
-	; Win tilemap 1
-	; Win on
-	; BG/Win tiledata 0
-	; BG Tilemap 0
-	; OBJ 8x8
-	; OBJ on
-	; BG on
-	ld [rLCDC], a
-
-	ld a, $ff
-	ld [$ffcb], a
-
-	callba Function9890
-
-	ld a, $9c
-	ld [$ffd7], a
-
-	xor a
-	ld [hBGMapAddress], a
-
-	callba StartClock
-
-	xor a
-	ld [MBC3LatchClock], a
-	ld [MBC3SRamEnable], a
-
-	ld a, [hCGB]
-	and a
-	jr z, .asm_22b
-	call Function2ff7
-.asm_22b
-
-	xor a
-	ld [rIF], a
-	ld a, %1111 ; VBlank, LCDStat, Timer, Serial interrupts
-	ld [rIE], a
-	ei
-
-	call DelayFrame
-
-	ld a, $30
-	call Predef
-
-	call CleanSoundRestart
-	xor a
-	ld [CurMusic], a
-	jp GameInit
-; 245
-
-
-ClearVRAM: ; 245
-; Wipe VRAM banks 0 and 1
-
-	ld a, 1
-	ld [rVBK], a
-	call .clear
-
-	xor a
-	ld [rVBK], a
-.clear
-	ld hl, VTiles0
-	ld bc, $2000
-	xor a
-	call ByteFill
-	ret
-; 25a
-
-ClearWRAM: ; 25a
-; Wipe swappable WRAM banks (1-7)
-
-	ld a, 1
-.asm_25c
-	push af
-	ld [rSVBK], a
-	xor a
-	ld hl, $d000
-	ld bc, $1000
-	call ByteFill
-	pop af
-	inc a
-	cp 8
-	jr nc, .asm_25c
-	ret
-; 270
-
-Function270: ; 270
-	ld a, $0
-	call GetSRAMBank
-	ld hl, $a000
-	ld bc, $0020
-	xor a
-	call ByteFill
-	call CloseSRAM
-	ret
-; 283
-
+INCLUDE "engine/init.asm"
 
 VBlank: ; 283
 INCLUDE "engine/vblank.asm"