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: |