mirror of
https://github.com/MiSTer-devel/SMS_MiSTer.git
synced 2026-04-19 03:05:00 +00:00
- removed the palette default for MSX games - removed raz memory and screen for SMS since it was erasing the logo
261 lines
6.7 KiB
NASM
261 lines
6.7 KiB
NASM
;------------------------------------------------------------------------------
|
|
; SMS Boot 0.91
|
|
; by Omar Cornut (Bock)
|
|
; Last updated 28 December 2003
|
|
;------------------------------------------------------------------------------
|
|
|
|
.INCLUDE "sms.inc"
|
|
|
|
; WlaDX stuffs ----------------------------------------------------------------
|
|
.EMPTYFILL $00
|
|
.SMSTAG
|
|
.COMPUTESMSCHECKSUM
|
|
.MEMORYMAP
|
|
DEFAULTSLOT 0
|
|
SLOTSIZE PAGE_SIZE
|
|
SLOT 0 PAGE_0
|
|
SLOT 1 PAGE_1
|
|
.ENDME
|
|
|
|
.ROMBANKMAP
|
|
BANKSTOTAL 2
|
|
BANKSIZE PAGE_SIZE
|
|
BANKS 2
|
|
.ENDRO
|
|
.BANK 0 SLOT 0
|
|
;------------------------------------------------------------------------------
|
|
|
|
; Variables -------------------------------------------------------------------
|
|
.DEFINE VAR_frame_cnt (RAM + $1000) ; 1 byte
|
|
.DEFINE VAR_menu_slot (RAM + $1001) ; 1 byte
|
|
.DEFINE VAR_menu_sprite_y (RAM + $1002) ; 1 byte
|
|
;------------------------------------------------------------------------------
|
|
|
|
; Start -----------------------------------------------------------------------
|
|
.ORGA $0000
|
|
di
|
|
im 1
|
|
ld sp, $DFF0
|
|
in a,($c0) ; special Mist(er) : during bootload, bit7 is game-gear indicator
|
|
bit 7,a
|
|
jr nz,gamegear_loc
|
|
smsstart:
|
|
jp start
|
|
;------------------------------------------------------------------------------
|
|
|
|
; Tools ---------------------------------------------------------------------
|
|
.ORGA $0010
|
|
vdp_write_de:
|
|
ld a, e
|
|
out (VDP_ADDR), a
|
|
ld a, d
|
|
out (VDP_ADDR), a
|
|
ret
|
|
;
|
|
;
|
|
.ORGA $0018
|
|
vdp_write_addr_de:
|
|
ld a, e
|
|
out (VDP_ADDR), a
|
|
ld a, d
|
|
or $40
|
|
out (VDP_ADDR), a
|
|
ret
|
|
|
|
.ORGA $0028
|
|
vdp_write_addr_hl:
|
|
ld a, l
|
|
out (VDP_ADDR), a
|
|
ld a, h
|
|
or $40
|
|
out (VDP_ADDR), a
|
|
ret
|
|
|
|
; Interrupt -------------------------------------------------------------------
|
|
.ORGA $0038
|
|
interrupt:
|
|
di
|
|
push af
|
|
in a, (VDP_STATUS)
|
|
and $80
|
|
jr z, interrupt_end
|
|
ld a, (VAR_frame_cnt)
|
|
inc a
|
|
ld (VAR_frame_cnt), a
|
|
interrupt_end:
|
|
pop af
|
|
ei
|
|
ret
|
|
;------------------------------------------------------------------------------
|
|
gamegear_loc: jp gamegear
|
|
|
|
; NMI -------------------------------------------------------------------------
|
|
.ORGA $0066
|
|
reti
|
|
;------------------------------------------------------------------------------
|
|
|
|
; SDSC HEADER DATA ------------------------------------------------------------
|
|
sdsc_author: .db "wsoltys", 0
|
|
sdsc_program_name: .db "MiST/MiSTer Boot Loader", 0
|
|
sdsc_unused_but_stored: .db "v0.92", 0
|
|
;------------------------------------------------------------------------------
|
|
|
|
; VDP Library -----------------------------------------------------------------
|
|
.INCLUDE "vdp.asm"
|
|
; DATA ------------------------------------------------------------------------
|
|
tiles_data:
|
|
.INCLUDE "tiles.inc"
|
|
palette_data:
|
|
.INCLUDE "palette.inc"
|
|
;------------------------------------------------------------------------------
|
|
|
|
start:
|
|
call vdp_init
|
|
|
|
; Setup palette for fade start
|
|
ld a, 0
|
|
ld b, 5
|
|
ld hl, pal_table_bg_fade_0
|
|
call vdp_set_pal
|
|
|
|
; Load tiles
|
|
ld bc, VRAM_TILE_SIZE * GFX_LAST_TILE
|
|
ld hl, tiles_data
|
|
ld de, $0000 + (1 * VRAM_TILE_SIZE)
|
|
call vdp_load_data
|
|
|
|
; Draw SEGA logo to map
|
|
ld b, GFX_SEGA_SIZE_X
|
|
ld c, GFX_SEGA_SIZE_Y
|
|
ld d, GFX_SEGA_TILE
|
|
ld e, 0
|
|
ld hl, VRAM_BG_MAP + (11*2+(20)*32)
|
|
call vdp_bg_putimage
|
|
|
|
; Draw Master System logo to map
|
|
; ld b, GFX_MASTERSYSTEM_SIZE_X
|
|
; ld c, GFX_MASTERSYSTEM_SIZE_Y
|
|
; ld d, GFX_MASTERSYSTEM_TILE
|
|
; ld e, 0
|
|
; ld hl, VRAM_BG_MAP + (4*2+(12)*32)
|
|
; call vdp_bg_putimage
|
|
|
|
; Draw Boot Loader logo to map
|
|
; ld b, GFX_BOOTLOADER_SIZE_X
|
|
; ld c, GFX_BOOTLOADER_SIZE_Y
|
|
; ld d, GFX_BOOTLOADER_TILE
|
|
; ld e, 0
|
|
; ld hl, VRAM_BG_MAP + (1*2+(22)*32)
|
|
; call vdp_bg_putimage
|
|
|
|
; Draw SMS Power copyright to map
|
|
; ld b, GFX_SMSPOWER_SIZE_X
|
|
; ld c, GFX_SMSPOWER_SIZE_Y
|
|
; ld d, GFX_SMSPOWER_TILE - 256
|
|
; ld e, 1
|
|
; ld hl, VRAM_BG_MAP + (9*2+(42)*32)
|
|
; call vdp_bg_putimage
|
|
|
|
; Reset horizontal scrolling
|
|
ld de, $8800
|
|
rst $10
|
|
|
|
; Enable display, 16x8 sprites & vblank
|
|
ld de, $81E2
|
|
rst $10
|
|
|
|
; Fade-in
|
|
xor a
|
|
ld b, 5
|
|
ld c, 4
|
|
ld d, 10
|
|
ld hl, pal_table_bg_fade_0
|
|
ei
|
|
call vdp_fade
|
|
di
|
|
|
|
; Enable display & 16x8 sprites, disable vblank
|
|
ld de, $81C2
|
|
rst $10
|
|
|
|
; Setup final palette
|
|
ld a, 16
|
|
ld b, 16
|
|
ld hl, pal_table_fg
|
|
call vdp_set_pal
|
|
|
|
wait_for_rom:
|
|
;
|
|
ld hl,modelSMS
|
|
ld de,$c700
|
|
ld bc,modelSMS_end-modelSMS
|
|
ldir
|
|
ld ix,$0000
|
|
ld iy,$0000
|
|
ld hl,$0293
|
|
ld sp,$dff0
|
|
ld a,$ab
|
|
ld ($c000),a
|
|
jp $c700
|
|
;
|
|
gamegear:
|
|
call vdp_clear ; raz vram
|
|
ld hl,$c000
|
|
xor a
|
|
ld (hl),a
|
|
ld bc,$1FFF
|
|
ld de,$c001
|
|
ldir ; raz memory
|
|
ld hl,modelGG
|
|
ld de,$c800
|
|
ld bc,modelGG_end-modelGG
|
|
ldir
|
|
ld ix,$0000
|
|
ld iy,$0000
|
|
ld hl,$00fa
|
|
ld sp,$dfee
|
|
ld a,$a8
|
|
ld ($c000),a
|
|
jp $c800
|
|
;
|
|
;
|
|
modelSMS:
|
|
ld a,$ab
|
|
out ($3e),a
|
|
jp $0000
|
|
modelSMS_end:
|
|
modelGG:
|
|
ld a,$a8
|
|
out ($3e),a
|
|
jp $0000
|
|
modelGG_end:
|
|
.db 0
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
boot_end:
|
|
|
|
.BANK 1 SLOT 1
|
|
|
|
; SDSC HEADER -----------------------------------------------------------------
|
|
.ORGA $7FE0
|
|
.DB "SDSC" ; Magic
|
|
.DB $00, $91 ; Version 0.91
|
|
.DB $12 ; 17
|
|
.DB $11 ; November
|
|
.DW $2001 ; 2001
|
|
.DW sdsc_author
|
|
.DW sdsc_program_name
|
|
.DW $FFFF
|
|
|
|
; CHECKSUM --------------------------------------------------------------------
|
|
.ORGA $7FF0
|
|
|
|
.DB "TMR SEGA" ; Trademark
|
|
.DW $0120 ; Year
|
|
.DW $0000 ; Checksum not correct
|
|
.DW $0000 ; Part Num not correct
|
|
.DB $01 ; Version
|
|
.DB $4C ; Master System, 32k
|
|
;
|