Code:
.CODEDEFINITION "GB.inc"
.equ StackTop = $FFFE
RST_00:
jp Main
DS 5
RST_08:
jp Main
DS 5
RST_10:
jp Main
DS 5
RST_18:
jp Main
DS 5
RST_20:
jp Main
DS 5
RST_28:
jp Main
DS 5
RST_30:
jp Main
DS 5
RST_38:
jp Main
DS 5
jp irq_VBlank
DS 5
jp irq_LCDC
DS 5
jp irq_Timer
DS 5
jp irq_Serial
DS 5
jp irq_HiLo
DS 5
.org $100
nop
jp Main
DB $CE,$ED,$66,$66,$CC,$0D,$00,$0B,$03,$73,$00,$83,$00,$0C,$00,$0D
DB $00,$08,$11,$1F,$88,$89,$00,$0E,$DC,$CC,$6E,$E6,$DD,$DD,$D9,$99
DB $BB,$BB,$67,$63,$6E,$0E,$EC,$CC,$DD,$DC,$99,$9F,$BB,$B9,$33,$3E
;0123456789ABCDEF
DB " "
DB 0,0,0 ;SuperGameboy
DB 0 ;CARTTYPE
;--------
;0 - ROM ONLY
;1 - ROM+MBC1
;2 - ROM+MBC1+RAM
;3 - ROM+MBC1+RAM+BATTERY
;5 - ROM+MBC2
;6 - ROM+MBC2+BATTERY
DB 0 ;ROMSIZE
;-------
;0 - 256 kBit ( 32 kByte, 2 banks)
;1 - 512 kBit ( 64 kByte, 4 banks)
;2 - 1 MBit (128 kByte, 8 banks)
;3 - 2 MBit (256 kByte, 16 banks)
;3 - 4 MBit (512 kByte, 32 banks)
DB 0 ;RAMSIZE
;-------
;0 - NONE
;1 - 16 kBit ( 2 kByte, 1 bank )
;2 - 64 kBit ( 8 kByte, 1 bank )
;3 - 256 kBit (32 kByte, 4 banks)
DW $0000 ;Manufacturer
DB 0 ;Version
DB 0 ;Complement check
DW 0 ;Checksum
; --
; -- Initialize the Gameboy
; --
main:
di ;Disable Interrupts
.wait: ;Wait for V_Blank
ld a,[$FF44] ;LY LCDC compare
cp a,144
jr nc,.wait
ld a,0
ld [$FF40],a ;lcdc
ld a,%11100100 ;set palette to normal
ld [$FF47],a
ld a,0
ld [$FF42],a ;set the scrollx and scrolly
ld [$FF43],a
call clearscreen
ld hl,tiledata
ld de,$8000
ld bc,4096
call ldir ;defined lower in the source..
ld hl,tilemap ;tile map
ld de,$9800
ld bc,1024 ;size of the tilemap
call ldir
ld a,%00000001 ;Enable VBlank-Interrupt
ld [$FFFF],a
ld a,%10010001
ld [$FF40],a ;turn the screen on
ei ;Enable Interrupts
; --
; -- mainloop does nothing
; --
mainloop:
jp mainloop ;neverending loop
; --
; -- clearscreen emties the gb-screen
; --
clearscreen:
ld hl, emptyspace
ld de,$9800
ld bc, 1024
call ldir
ret
; --
; -- ldir - Copies a specified memory-location to another location
; -- Parameters:
; -- - hl: Source
; -- - de: Destination
; -- - bc: Count
ldir:;there is no ldir command
.ldir:
ld a,[hl]
inc hl
ld [de],a
inc de
dec bc
ld a,c
or a,b
jr nz,.ldir
ret
tilemap:
;.include "fontmap.inc"
db "Hallo Roboternetz..............."
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
db "................................"
tiledata:
.include "ibmfont.inc"
; --
; -- Some interrupts
; --
irq_VBLANK:
;ld a,[$FF43]
;inc a
;ld [$FF42],a ;set the scrollx and scrolly
;ld a,104
;ld [$FF43],a
reti
irq_LCDC:
reti
irq_Timer:
reti
irq_Serial:
reti
irq_HiLo:
reti
emptySpace:
ds 1024
Ich weiß ja nicht genau inwieweit ihr euch mit dem GB beschäftigen wollt, aber die Hardware ist echt faszinierend. Steuerungstechnisch auch: Es gibt echt viel Zusatzhardware mit der man super am GB arbeiten kann (z.b. eine Tastatur am seriellen Port des GBs). Am parallelen Port kann man eigentlich soviel machen wie man will.(Ein Software-I2C Bus sollte ja nicht allzuschwer sein...) Von den erweiterung ganz zu schweigen... man muss nur die Ideen alle umsetzen können. Wem der Classic-GB zu langsam ist, kann ja auf den GBA ausweichen. Der ist um einiges schneller und hat ein super Display...
Lesezeichen