gb_test1

annotate test.asm @ 0:1b77ae3b7c5f

initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 03 Jan 2019 08:20:10 +0200
parents
children
rev   line source
nuclear@0 1 ; vi:ft=rgbasm:
nuclear@0 2 REG_LCDC equ $ff40
nuclear@0 3 REG_STAT equ $ff41
nuclear@0 4 REG_SCY equ $ff42
nuclear@0 5 REG_SCX equ $ff43
nuclear@0 6 REG_LY equ $ff44
nuclear@0 7 REG_LYC equ $ff45
nuclear@0 8 REG_BGP equ $ff47
nuclear@0 9 REG_OBP0 equ $ff48
nuclear@0 10 REG_OBP1 equ $ff49
nuclear@0 11 REG_WY equ $ff4a
nuclear@0 12 REG_WX equ $ff4b
nuclear@0 13
nuclear@0 14 LCDC_BGON equ $01
nuclear@0 15 LCDC_OBJON equ $02
nuclear@0 16 LCDC_OBJ16 equ $04
nuclear@0 17 LCDC_BGMAP_9C00 equ $08
nuclear@0 18 LCDC_CHAR_8000 equ $10
nuclear@0 19 LCDC_WON equ $20
nuclear@0 20 LCDC_WMAP_9C00 equ $40
nuclear@0 21 LCDC_DISPON equ $80
nuclear@0 22
nuclear@0 23 section "hdr", ROM0[$100]
nuclear@0 24 nop
nuclear@0 25 jp main
nuclear@0 26
nuclear@0 27 rept $150 - $104
nuclear@0 28 db 0
nuclear@0 29 endr
nuclear@0 30
nuclear@0 31 section "text", ROM0
nuclear@0 32
nuclear@0 33 main:
nuclear@0 34 ldh a, [REG_LY]
nuclear@0 35 cp a, 144
nuclear@0 36 jr c, main
nuclear@0 37
nuclear@0 38 ; disable the display
nuclear@0 39 xor a, a
nuclear@0 40 ldh [REG_LCDC], a
nuclear@0 41
nuclear@0 42 ld hl, $8000 ; point hl to character data area (tiles)
nuclear@0 43 ld de, tile0
nuclear@0 44 ld c, tiles_end - tile0
nuclear@0 45 .copytile:
nuclear@0 46 ld a, [de]
nuclear@0 47 ld [hl+], a
nuclear@0 48 inc de
nuclear@0 49 dec c
nuclear@0 50 jr nz, .copytile
nuclear@0 51
nuclear@0 52 ld hl, $9800 ; point hl to BG vram
nuclear@0 53 ld b, 18
nuclear@0 54 .fillscr:
nuclear@0 55 ld c, 32
nuclear@0 56 .fillrow:
nuclear@0 57 ld a, b
nuclear@0 58 add a, c
nuclear@0 59 and a, 1
nuclear@0 60
nuclear@0 61 ld [hl+], a
nuclear@0 62 dec c
nuclear@0 63 jr nz, .fillrow
nuclear@0 64
nuclear@0 65 dec b
nuclear@0 66 jr nz, .fillscr
nuclear@0 67
nuclear@0 68 ; setup identity palette
nuclear@0 69 ld a, $e4 ; 0:00 1:01 2:10 3:11
nuclear@0 70 ldh [REG_BGP], a
nuclear@0 71
nuclear@0 72 ; reset scroll to 0
nuclear@0 73 xor a, a
nuclear@0 74 ldh [REG_SCY], a
nuclear@0 75 ldh [REG_SCX], a
nuclear@0 76
nuclear@0 77 ; setup the LCDC and enable the display
nuclear@0 78 ld a, LCDC_DISPON | LCDC_CHAR_8000 | LCDC_BGON
nuclear@0 79 ldh [REG_LCDC], a
nuclear@0 80
nuclear@0 81 di
nuclear@0 82 .end: halt
nuclear@0 83 nop
nuclear@0 84 jp .end
nuclear@0 85
nuclear@0 86 section "data", ROM0
nuclear@0 87
nuclear@0 88 ; lower bit,upper bit, for each row of 8 pixels
nuclear@0 89 tile0: db $55,$00
nuclear@0 90 db $aa,$00
nuclear@0 91 db $55,$00
nuclear@0 92 db $aa,$00
nuclear@0 93 db $55,$00
nuclear@0 94 db $aa,$00
nuclear@0 95 db $55,$00
nuclear@0 96 db $aa,$00
nuclear@0 97 tile1: db $ff,$aa
nuclear@0 98 db $ff,$55
nuclear@0 99 db $ff,$aa
nuclear@0 100 db $ff,$55
nuclear@0 101 db $ff,$aa
nuclear@0 102 db $ff,$55
nuclear@0 103 db $ff,$aa
nuclear@0 104 db $ff,$55
nuclear@0 105 tiles_end: