Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- opt l+ ; use . for local lables
- opt d+ ; descope local lables equ, set, etc.
- opt ae+ ; automatic even on dc, dcb, ds, rw .w/l
- opt op+ ; pc relative optimizations
- ; ===========================================================================
- VDP_Data_Port equ $C00000
- VDP_Control_Port equ $C00004
- VDP_Counter equ $C00008
- ; ===========================================================================
- _rts macro
- move.w d0,1.w ; cause address error
- endm
- _end macro
- move.l a0,usp ; cause privilege violation error
- endm
- asc macro
- rept narg
- dc.w \1
- shift
- endr
- endm
- ; ===========================================================================
- dma macro source,dest,length,type
- move.l #(($9400|((((length)>>1)&$FF00)>>8))<<16)|($9300|(((length)>>1)&$FF)),(a1)
- move.l #(($9600|((((source)>>1)&$FF00)>>8))<<16)|($9500|(((source)>>1)&$FF)),(a1)
- move.l #(($9700|(((((source)>>1)&$FF0000)>>16)&$7F))<<16)|((((dest)&$3FFF)|((type&1)<<15)|$4000)),(a1)
- move.w #$80|(((dest)&$C000)>>14)|((type&2)<<3),(a1)
- endm
- ; values for the type argument
- VRAM = $0
- CRAM = $1
- VSRAM = $2
- ; ===========================================================================
- dc.l $FF0000, EntryPoint, ErrorTrap, $FF0000
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l Code_End, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- dc.l ErrorTrap, ErrorTrap, ErrorTrap, ErrorTrap
- Console: dc.b 'SEGA' ; Hardware system ID
- ; ===========================================================================
- StartofRAM
- LoadFont:
- move.l #VDP_Data_Port,a0
- move.l #VDP_Control_Port,a1
- move.w #VDPregs,a2
- rept 24/2
- move.l (a2)+,(a1) ; move VDP register data
- endr
- move.l #$C00A0000,(a1) ; CRAM write $A
- move.l #$EEE,(a0) ; write the palette
- dma EndOfROM, $C000, $400, VRAM ; DMA Plane A and B mappings
- dma EndOfROM, $C400, $400, VRAM ; DMA Plane A and B mappings
- dma EndOfROM, $0000, 32, VRAM ; DMA blank tile
- dma Font_GFX, $0600, $2A*32, VRAM ; DMA art
- move.l #$42100003,(a1)
- move.w #Data_Maps,a2
- rept 16/2
- move.l (a2)+,(a0) ; write the mappings
- endr
- code_asc move.l #0,(a0) ; write EU/US/JP depending on region
- moveq #0,d0
- move.l d0,a0
- move.l a0,usp ; prepare Privilege Violation
- ErrorTrap:
- Code_End: _end ; cause privilege violation
- EndofRAM
- ; ===========================================================================
- VDPregs: dc.w $8004, $8154, $8230, $8332
- dc.w $8406, $8562, $8600, $8705
- dc.w $8800, $8900, $8A00, $8B00
- dc.w $8C71, $8D3F, $8E00, $8F02
- dc.w $9000, $9100, $9200, $93FF
- dc.w $94FF, $9500, $9600, $9780
- ; ===========================================================================
- EntryPoint:
- moveq #0,d0
- move.b $A10001,d0
- move.w #Data_truthtable,a0
- move.b (a0,d0.w),d0 ; get regional settings
- move.w #StartofRAM,a0
- move.l #$FF0000,a1
- rept ((EndofRAM-StartofRAM)/4)
- move.l (a0)+,(a1)+ ; move ROM area to RAM
- endr
- move.w #Data_Values,a0
- move.l (a0,d0.w),a0 ; get pointer to regional setting data
- move.l (a0)+,a1 ; get address ($FFFFFC or A14000)
- move.l #'SEGA',(a1) ; move SEGA
- move.b (a0)+,$FF0000+(code_asc-StartofRAM)+3
- move.b (a0),$FF0000+(code_asc-StartofRAM)+5 ; set region ascii
- _rts
- ; ===========================================================================
- Data_truthtable dc.b 10*1 ; TMSS JP
- dcb.b $7F, 10*0 ; non-TMSS JP
- dc.b 10*3 ; TMSS US
- dcb.b $3F, 10*2 ; non-TMSS US
- dc.b 10*5 ; TMSS EU
- dcb.b $3F, 10*4 ; non-TMSS EU
- ; ===========================================================================
- Data_Values: dc.l *+4, -4
- dc.w 'JP' ; non-TMSS JP
- dc.l *+4, $A14000
- dc.w 'JP' ; TMSS JP
- dc.l *+4, -4
- dc.w 'US' ; non-TMSS US
- dc.l *+4, $A14000
- dc.w 'US' ; TMSS US
- dc.l *+4, -4
- dc.w 'EU' ; non-TMSS EU
- dc.l *+4, $A14000
- dc.w 'EU' ; TMSS EU
- ; ===========================================================================
- Data_Maps: asc $59,'M','A','C','H','I','N','E',$59,'R','E','G','I','O','N',$59
- ; ===========================================================================
- Font_GFX:
- dc.l $00000000, $00000000, $00666600, $06600660, $66606660, $66660660, $66006600, $06666000
- dc.l $00000000, $00000000, $00066600, $00606600, $00006600, $00066000, $00066000, $06666600
- dc.l $00000000, $00000000, $00666000, $06006600, $00006600, $00066000, $00660000, $06666600
- dc.l $00000000, $00000000, $06666600, $00006600, $00066000, $00006600, $06006600, $06666000
- dc.l $00000000, $00000000, $00066600, $00606600, $06006000, $66666660, $00066000, $00666000
- dc.l $00000000, $00000000, $00666600, $00600000, $00666600, $00000660, $06006660, $00666600
- dc.l $00000000, $00000000, $00066600, $00660000, $06666000, $66006600, $66006600, $66666000
- dc.l $00000000, $00000000, $06666600, $06006600, $00066000, $00660000, $06600000, $66600000
- dc.l $00000000, $00000000, $00666600, $06600660, $00666600, $06666000, $66006600, $06666000
- dc.l $00000000, $00000000, $00666600, $06600660, $06600660, $00666600, $00006600, $06666000
- dc.l $00000000, $00060000, $00666600, $06060000, $00666000, $00060600, $06666000, $00060000
- dc.l $00000000, $00000000, $00000000, $00000000, $06666660, $00000000, $00000000, $00000000
- dc.l $00000000, $00000000, $00000000, $06666660, $00000000, $06666660, $00000000, $00000000
- dc.l $00000000, $00006000, $00006600, $06666660, $06666660, $00006600, $00006000, $00000000
- dc.l $00000000, $00006000, $00006600, $06666660, $06666660, $00006600, $00006000, $00000000
- dc.l $00000000, $00000000, $06600660, $06600660, $00606600, $00666000, $06660000, $66600000
- dc.l $00000000, $00000000, $06666660, $00006600, $00066000, $00660000, $06600000, $66666600
- dc.l $00000000, $00000000, $00006660, $00060660, $00600660, $00666660, $06600660, $66000660
- dc.l $00000000, $00000000, $00666600, $00600660, $06666600, $06666000, $66006600, $66666000
- dc.l $00000000, $00000000, $00666600, $06600660, $06600000, $66000000, $66006600, $66666000
- dc.l $00000000, $00000000, $00666600, $00660660, $06600660, $06600660, $66006600, $66666000
- dc.l $00000000, $00000000, $00666660, $00660000, $06600000, $06666000, $66000000, $66666600
- dc.l $00000000, $00000000, $00666660, $06660000, $06600000, $06666600, $66600000, $66600000
- dc.l $00000000, $00000000, $00666600, $06660060, $06600000, $66006660, $66006600, $66666600
- dc.l $00000000, $00000000, $00660060, $00660660, $06600660, $06666600, $66006600, $66006600
- dc.l $00000000, $00000000, $00066000, $00066000, $00660000, $00660000, $06600000, $06600000
- dc.l $00000000, $00000000, $00000660, $00000660, $06006600, $66006600, $66666000, $06660000
- dc.l $00000000, $00000000, $00660060, $00660660, $06606600, $06666000, $66006600, $66000660
- dc.l $00000000, $00000000, $00066000, $00660000, $06600000, $06600000, $66000000, $66666600
- dc.l $00000000, $00000000, $00660060, $00660660, $00666660, $06060660, $06000660, $66000660
- dc.l $00000000, $00000000, $00660060, $00660060, $00666060, $06066600, $06006600, $66006600
- dc.l $00000000, $00000000, $00666600, $06600660, $66606660, $66606660, $66006600, $06666000
- dc.l $00000000, $00000000, $00666600, $00660060, $06600660, $06666600, $66600000, $66000000
- dc.l $00000000, $00000000, $00666600, $06600660, $66000660, $66666660, $66006600, $66666660
- dc.l $00000000, $00000000, $00666600, $00660060, $06600660, $06666600, $66006600, $66006660
- dc.l $00000000, $00000000, $00666660, $06600660, $06660000, $00666600, $66006660, $66666600
- dc.l $00000000, $00000000, $06666660, $00066000, $00066000, $00660000, $00660000, $00660000
- dc.l $00000000, $00000000, $00660060, $00660060, $06600660, $06600600, $66666600, $66666000
- dc.l $00000000, $00000000, $06600060, $06600060, $06600660, $06606600, $06666000, $66660000
- dc.l $00000000, $00000000, $66000060, $66000060, $66060660, $66666600, $66006600, $66006600
- dc.l $00000000, $00000000, $06600060, $06660600, $00666000, $00066000, $00666600, $66006660
- ; ===========================================================================
- EndOfROM: dcb.b $400,0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement