aaaaaa123456789 icon

GB/GBC SP + e8 test ROM

aaaaaa123456789 | PRO | 08/07/20 08:07:19 AM UTC | 0 ⭐ | 423 👁️ | Never ⏰ | []
text |

4.29 KB

|

None

|

0 👍

/

0 👎

rLCDC EQU $ff40rSTAT EQU $ff41rSCX  EQU $ff42rSCY  EQU $ff43rVBK  EQU $ff4frBCPS EQU $ff68rBCPD EQU $ff69rOCPS EQU $ff6arOCPD EQU $ff6brIE   EQU $ffff SECTION "ROM", ROM0[0] Main:	call ScreenOffMainContinue:	xor a	ldh [rSCX], a	ldh [rSCY], a	ldh [rIE], a	dec a	ld hl, $9c00.clear_tilemap_loop	ld [hli], a	bit 5, h	jr z, .clear_tilemap_loop	ld hl, $8ff0	xor a.clear_tile_loop	ld [hli], a	bit 4, h	jr z, .clear_tile_loop	ld de, Font	ld c, 160.load_font_loop	ld a, [de]	inc de	ld [hli], a	ld [hli], a	dec c	jr nz, .load_font_loop	call Calculate	ld a, $89	ldh [rLCDC], a	ei.halts	db $76, $76, $76 ;triple halt	jr .halts Font:	db $7C, $C6, $CE, $DE, $F6, $E6, $7C, $00 ;0	db $30, $70, $30, $30, $30, $30, $FC, $00 ;1	db $78, $CC, $0C, $38, $60, $CC, $FC, $00 ;2	db $78, $CC, $0C, $38, $0C, $CC, $78, $00 ;3	db $1C, $3C, $6C, $CC, $FE, $0C, $1E, $00 ;4	db $FC, $C0, $F8, $0C, $0C, $CC, $78, $00 ;5	db $38, $60, $C0, $F8, $CC, $CC, $78, $00 ;6	db $FC, $CC, $0C, $18, $30, $30, $30, $00 ;7	db $78, $CC, $CC, $78, $CC, $CC, $78, $00 ;8	db $78, $CC, $CC, $7C, $0C, $18, $70, $00 ;9	db $30, $78, $CC, $CC, $FC, $CC, $CC, $00 ;A	db $FC, $66, $66, $7C, $66, $66, $FC, $00 ;B	db $3C, $66, $C0, $C0, $C0, $66, $3C, $00 ;C	db $F8, $6C, $66, $66, $66, $6C, $F8, $00 ;D	db $FE, $62, $68, $78, $68, $62, $FE, $00 ;E	db $FE, $62, $68, $78, $68, $60, $F0, $00 ;F	db $FE, $C6, $8C, $18, $32, $66, $FE, $00 ;Z	db $00, $00, $FC, $00, $00, $FC, $00, $00 ;=	db $00, $00, $00, $FC, $00, $00, $00, $00 ;-	db $00, $30, $30, $FC, $30, $30, $00, $00 ;+ ScreenOff:	ldh a, [rSTAT]	and 3	cp 1	jr nz, ScreenOff	di	xor a	ldh [rLCDC], a	ret LoadColor:	ld a, l	ldh [rBCPD], a	ldh [rOCPD], a	ld a, h	ldh [rBCPD], a	ldh [rOCPD], a	ret PrintByte:	; in: a: byte, de: destination	push af	swap a	and $f	ld [de], a	inc de	pop af	and $f	ld [de], a	inc de	ret rept $100 - @	db $ffendr ; entry point	dec a	jr nz, LoadPalettes	rst 0 rept $134 - @	nopendr ; header data - encoded here so it's consistent across builds	db "SP TEST ROM" ;title	db "TEST"        ;manufacturer	db $80           ;CGB + DMG	db "XX"          ;new licensee	db 0             ;no SGB	db 0             ;cart type: ROM only	db 0             ;32K ROM	db 0             ;no RAM	db 1             ;destination: not Japan	db $33           ;old licensee (must be $33)	db 1             ;ROM version	db 0             ;checksum (must fix)	dw 0             ;global checksum (must fix) LoadPalettes:	call ScreenOff	ld a, 1	ldh [rVBK], a	ld hl, $9c00	xor a.loop	ld [hli], a	bit 5, h	jr z, .loop	ldh [rVBK], a	ld a, $80	ldh [rBCPS], a	ldh [rOCPS], a	ld hl, $7fff	call LoadColor	ld hl, $56b5	call LoadColor	ld hl, $294a	call LoadColor	ld hl, 0	call LoadColor	jp MainContinue GeneratedCode:	; in: hl: target sp, a: target addend	; out: hl: result, a: flags	cp a ;reset flags to a known state	ldh [$ff80 + (.add_instruction - GeneratedCode) + 1], a	ld [$ffe0], sp	ld sp, hl.add_instruction	add sp, 0	ld [$ffe2], sp	ld sp, $ffe6	push af	ld hl, $ffe0	ld a, [hli]	ld h, [hl]	ld l, a	ld sp, hl	ld hl, $ffe2	ld a, [hli]	ld h, [hl]	ld l, a	ldh a, [$ffe4]	ret.end Calculate:	ld bc, ((GeneratedCode.end - GeneratedCode) << 8) + $80	ld hl, GeneratedCode.copy_loop	ld a, [hli]	ldh [c], a	inc c	dec b	jr nz, .copy_loop	ld bc, Addends	ld de, $9c00.loop	ld a, [bc]	inc bc	ld h, a	call PrintByte	ld a, [bc]	inc bc	ld l, a	call PrintByte	inc de	ld a, [bc]	inc bc	push bc	ld c, a	add a, a	sbc a	add a, $13	ld [de], a	inc de	inc de	ld a, c	bit 7, c	jr z, .not_negative	cpl	inc a.not_negative	call PrintByte	inc de	ld a, $11	ld [de], a	inc de	inc de	ld a, c	call $ff80	ld c, a	ld a, h	call PrintByte	ld a, l	call PrintByte	inc de	inc de	ld a, c	add a, a	sbc a	add a, a	add a, $12	ld [de], a	inc de	swap c	srl c	sbc a	and $c - $12	add a, $12	ld [de], a	set 2, e	set 3, e	inc de	pop bc	ld a, c	cp LOW(Addends.end)	jr nz, .loop	ret addends: MACRO	db HIGH(\1)	db LOW(\1)	db \2ENDM Addends:	addends $0000, +$00	addends $ffff, +$01	addends $ff80, -$80	addends $0080, -$80	addends $0002, -$02	addends $ffcf, +$30	addends $ffbd, +$53	addends $ff96, +$76	addends $000e, -$0e	addends $000e, +$0e	addends $00ff, +$01	addends $0042, +$42	addends $fea2, +$5e.end 

Comments