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: