first commit

This commit is contained in:
2023-03-24 23:59:36 +01:00
commit 0d482bbbcc
15 changed files with 2273 additions and 0 deletions

95
main.asm Normal file
View File

@@ -0,0 +1,95 @@
include "hardware.inc"
section "Start",rom0[$100] ; hier startet der Gameboy
di ; Interrupts ausschalten
jp Program ; Springe zum eigentlichen Programm
section "Programm",rom0[$150] ; hier läuft das Programm
Program:
call LCDOff
ld a, %11111100 ; Hintergrund Farbpallette definieren
ld [rBGP], a ; Hintergrund Farbpallette laden
;;; Font in VRAM kopieren
ld de, font ; Font Quelle
ld bc, font_end-font ; Font Länge
ld hl, _VRAM+$200 ; Ziel
call TileCopy
;;; Text schreiben
ld a, $3
ld [$C000], a
ld a, $99
ld [$C001], a
ld hl, _SCRN0
.bgfill
ld de, text
ld bc, text_end-text
.charcopy
ld a, [de]
ld [hli], a
inc de
dec bc
ld a, b
or a, c
jr nz, .skip
ld de, text
ld bc, text_end-text
.skip
ld a, [$C001]
dec a
ld [$C001], a
or a, 0
jr nz, .charcopy
ld a, $FF
ld [$C001], a
ld a, [$C000]
dec a
ld [$C000], a
or a, 0
jr nz, .bgfill
;;; LCD einschalten
ld a, 0
ld [rSCX], a
ld [rSCY], a
ld a, LCDCF_ON ; LCD Einschaltbit nach a Laden
or a, LCDCF_BG8000
or a, LCDCF_BGON
ld [rLCDC], a ; LCD einschalten
.loop
halt
jr .loop
LCDOff:
.turn_of_LCD ; Bildschirm auschalten
ld a, [rLY] ; Y Koordinate vom LCD nach a
cp a, $90 ; Vergleich ob LCD in Zeile 144
jr nz, .turn_of_LCD ; Wiederholen bis LCD in Zeile 144 ist
ld a, LCDCF_OFF ; LCD Ausschaltbit nach a Laden
ld [rLCDC], a ; LCD ausschalten
ret
TileCopy:
.copy
ld a, [de]
inc de
ld [hli], a
dec bc
ld a, b
or a, c
jr nz, .copy
ret
section "assets",rom0[$300]
text: db "Hello World! "
text_end:
font: incbin "font_8x8.chr"
font_end: