let's dev 1/21/18
anti-zsnes fix more shop dev
This commit is contained in:
@@ -26,7 +26,7 @@ org $3FFFFF ; <- 1FFFFF
|
|||||||
db #$00 ; expand file to 2mb
|
db #$00 ; expand file to 2mb
|
||||||
|
|
||||||
org $1FFFF8 ; <- FFFF8 timestamp rom
|
org $1FFFF8 ; <- FFFF8 timestamp rom
|
||||||
db #$20, #$18, #$01, #$20 ; year/month/day
|
db #$20, #$18, #$01, #$21 ; year/month/day
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
|
|
||||||
@@ -140,6 +140,10 @@ warnpc $1CF356
|
|||||||
|
|
||||||
org $A18000 ; static mapping area
|
org $A18000 ; static mapping area
|
||||||
incsrc framehook.asm
|
incsrc framehook.asm
|
||||||
|
warnpc $A18800
|
||||||
|
|
||||||
|
org $A18800 ; static mapping area
|
||||||
|
incsrc zsnes.asm
|
||||||
warnpc $A19000
|
warnpc $A19000
|
||||||
|
|
||||||
org $A1FF00 ; static mapping area
|
org $A1FF00 ; static mapping area
|
||||||
|
|||||||
@@ -22,6 +22,14 @@ org $0080D0 ; <- D0 - Bank00.asm : 164 (PHA : PHX : PHY : PHD : PHB)
|
|||||||
NMIHookReturn:
|
NMIHookReturn:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
;================================================================================
|
||||||
|
; Anti-ZSNES Hook
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $008023 ;<- 23 - Bank00.asm : 36 (LDA.w #$01FF : TCS)
|
||||||
|
JML.l CheckZSNES
|
||||||
|
ReturnCheckZSNES:
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
|
||||||
;================================================================================
|
;================================================================================
|
||||||
; Dungeon Entrance Hook
|
; Dungeon Entrance Hook
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
155
shopkeeper.asm
155
shopkeeper.asm
@@ -127,8 +127,9 @@ RTS
|
|||||||
!FREE_TILE_BUFFER = "#$1180"
|
!FREE_TILE_BUFFER = "#$1180"
|
||||||
!SHOP_ID = "$7F5050"
|
!SHOP_ID = "$7F5050"
|
||||||
!SHOP_TYPE = "$7F5051"
|
!SHOP_TYPE = "$7F5051"
|
||||||
!SHOP_INVENTORY = "$7F5051"
|
!SHOP_INVENTORY = "$7F5052"
|
||||||
!SCRATCH_CAPACITY = "$7F5020"
|
!SCRATCH_CAPACITY = "$7F5020"
|
||||||
|
!SCRATCH_TEMP_X = "$7F5021"
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
.digit_properties
|
.digit_properties
|
||||||
dw $0230, $0231, $0202, $0203, $0212, $0213, $0222, $0223, $0232, $0233
|
dw $0230, $0231, $0202, $0203, $0212, $0213, $0222, $0223, $0232, $0233
|
||||||
@@ -302,21 +303,7 @@ Sprite_ShopKeeper:
|
|||||||
LDA $92 : INC #2 : STA $92
|
LDA $92 : INC #2 : STA $92
|
||||||
|
|
||||||
; Draw Items
|
; Draw Items
|
||||||
LDA.b #$03 : STA $06 ; request 3 OAM slots
|
JSR.w Shopkeeper_DrawItems
|
||||||
LDA $20 : CMP.b #$60 : !BGE .below
|
|
||||||
.above
|
|
||||||
LDA #$0C : JSL.l OAM_AllocateFromRegionA : BRA + ; request 12 bytes
|
|
||||||
.below
|
|
||||||
LDA #$0C : JSL.l OAM_AllocateFromRegionB ; request 12 bytes
|
|
||||||
+
|
|
||||||
LDA.b #$03 : STA $06 ; request 3 OAM slots
|
|
||||||
STZ $07
|
|
||||||
LDA.b #.oam_items : STA $08
|
|
||||||
LDA.b #.oam_items>>8 : STA $09
|
|
||||||
JSL.l Sprite_DrawMultiple_quantity_preset
|
|
||||||
LDA $90 : !ADD.b #$04*3 : STA $90 ; increment oam pointer
|
|
||||||
LDA $92 : INC #3 : STA $92
|
|
||||||
|
|
||||||
|
|
||||||
LDA.b #$00 : STA.l !SKIP_EOR
|
LDA.b #$00 : STA.l !SKIP_EOR
|
||||||
|
|
||||||
@@ -393,24 +380,122 @@ dw 0, 0 : db $10, $0C, $00, $02
|
|||||||
dw 0, -8 : db $00, $0C, $00, $02
|
dw 0, -8 : db $00, $0C, $00, $02
|
||||||
dw 0, 0 : db $10, $4C, $00, $02
|
dw 0, 0 : db $10, $4C, $00, $02
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
.oam_items
|
;!SHOP_TYPE = "$7F5051"
|
||||||
dw -40, 40 : db $C0, $08, $00, $02
|
;!SHOP_INVENTORY = "$7F5052"
|
||||||
dw 8, 40 : db $C2, $04, $00, $02
|
!SPRITE_OAM = "$7EC025"
|
||||||
dw 56, 40 : db $C4, $02, $00, $02
|
Shopkeeper_DrawItems:
|
||||||
;--------------------------------------------------------------------------------
|
PHB : PHK : PLB
|
||||||
.oam_prices
|
PHX : PHY
|
||||||
dw -48, 56 : db $30, $02, $00, $00
|
TXA : STA !SCRATCH_TEMP_X;
|
||||||
dw -40, 56 : db $31, $02, $00, $00
|
LDX.b #$00
|
||||||
dw -32, 56 : db $02, $02, $00, $00
|
LDY.b #$00
|
||||||
dw -24, 56 : db $03, $02, $00, $00
|
LDA !SHOP_TYPE : AND.b #$03
|
||||||
|
CMP.b #$03 : BNE +
|
||||||
|
JSR.w Shopkeeper_DrawNextItem : BRA ++
|
||||||
|
+ CMP.b #$02 : BNE + : ++
|
||||||
|
JSR.w Shopkeeper_DrawNextItem : BRA ++
|
||||||
|
+ CMP.b #$01 : BNE + : ++
|
||||||
|
JSR.w Shopkeeper_DrawNextItem
|
||||||
|
+
|
||||||
|
PLY : PLX
|
||||||
|
PLB
|
||||||
|
RTS
|
||||||
|
|
||||||
dw 0, 56 : db $12, $02, $00, $00
|
;--------------------------------------------------------------------------------
|
||||||
dw 8, 56 : db $13, $02, $00, $00
|
Shopkeeper_DrawNextItem:
|
||||||
dw 16, 56 : db $22, $02, $00, $00
|
PHY
|
||||||
dw 24, 56 : db $23, $02, $00, $00
|
TYA : ASL #2 : TAY
|
||||||
|
REP #$20 ; set 16-bit accumulator
|
||||||
dw 48, 56 : db $32, $02, $00, $00
|
LDA.w .item_offsets, Y : STA.l !SPRITE_OAM
|
||||||
dw 56, 56 : db $33, $02, $00, $00
|
LDA.w .item_offsets+2, Y : STA.l !SPRITE_OAM+2
|
||||||
dw 64, 56 : db $30, $02, $00, $00
|
SEP #$20 ; set 8-bit accumulator
|
||||||
dw 72, 56 : db $31, $02, $00, $00
|
PLY
|
||||||
|
|
||||||
|
LDA.w .tile_indices, Y ; get item gfx index
|
||||||
|
STA.l !SPRITE_OAM+4
|
||||||
|
|
||||||
|
LDA.l !SHOP_INVENTORY, X ; get item palette
|
||||||
|
JSL.l GetSpritePalette : STA.l !SPRITE_OAM+5
|
||||||
|
|
||||||
|
LDA.b #$00 : STA.l !SPRITE_OAM+6
|
||||||
|
|
||||||
|
LDA.l !SHOP_INVENTORY, X ; get item palette
|
||||||
|
JSL.l IsNarrowSprite : BCS .narrow
|
||||||
|
.full
|
||||||
|
LDA.b #$02
|
||||||
|
STA.l !SPRITE_OAM+7
|
||||||
|
LDA.b #$01
|
||||||
|
BRA ++
|
||||||
|
.narrow
|
||||||
|
LDA.b #$00
|
||||||
|
STA.l !SPRITE_OAM+7
|
||||||
|
JSR.w PrepNarrowLower
|
||||||
|
LDA.b #$02
|
||||||
|
++
|
||||||
|
PHX : PHA : LDA !SCRATCH_TEMP_X : TAX : PLA : JSR.w RequestItemOAM : PLX
|
||||||
|
INY
|
||||||
|
INX #3
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
.item_offsets
|
||||||
|
dw -40, 40
|
||||||
|
dw 8, 40
|
||||||
|
dw 56, 40
|
||||||
|
.tile_indices
|
||||||
|
db $C0, $C2, $C4
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
RequestItemOAM:
|
||||||
|
PHX : PHY : PHA
|
||||||
|
STA $06 ; request A OAM slots
|
||||||
|
LDA $20 : CMP.b #$60 : !BGE .below
|
||||||
|
.above
|
||||||
|
LDA 1,s : ASL #2 : JSL.l OAM_AllocateFromRegionA : BRA + ; request 4A bytes
|
||||||
|
BRA +
|
||||||
|
.below
|
||||||
|
LDA 1,s : ASL #2 : JSL.l OAM_AllocateFromRegionB ; request 4A bytes
|
||||||
|
+
|
||||||
|
LDA 1,s : STA $06 ; request 3 OAM slots
|
||||||
|
STZ $07
|
||||||
|
LDA.b #!SPRITE_OAM : STA $08
|
||||||
|
LDA.b #!SPRITE_OAM>>8 : STA $09
|
||||||
|
LDA #$7E : PHB : PHA : PLB
|
||||||
|
JSL Sprite_DrawMultiple_quantity_preset
|
||||||
|
PLB
|
||||||
|
LDA 1,s : ASL #2 : !ADD $90 : STA $90 ; increment oam pointer
|
||||||
|
LDA $92 : !ADD 1,s : STA $92
|
||||||
|
PLA : PLY : PLX
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
PrepNarrowLower:
|
||||||
|
PHX
|
||||||
|
LDX.b #$00
|
||||||
|
REP #$20 ; set 16-bit accumulator
|
||||||
|
LDA !SPRITE_OAM, X : !ADD.w #$0004 : STA !SPRITE_OAM, X : STA !SPRITE_OAM+8, X
|
||||||
|
LDA !SPRITE_OAM+2, X : !ADD.w #$0008 : STA !SPRITE_OAM+10, X
|
||||||
|
LDA !SPRITE_OAM+4, X : !ADD.w #$0010 : STA !SPRITE_OAM+12, X
|
||||||
|
LDA !SPRITE_OAM+6, X : STA !SPRITE_OAM+14, X
|
||||||
|
SEP #$20 ; set 8-bit accumulator
|
||||||
|
PLX
|
||||||
|
RTS
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
;.oam_items
|
||||||
|
;dw -40, 40 : db $C0, $08, $00, $02
|
||||||
|
;dw 8, 40 : db $C2, $04, $00, $02
|
||||||
|
;dw 56, 40 : db $C4, $02, $00, $02
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
;.oam_prices
|
||||||
|
;dw -48, 56 : db $30, $02, $00, $00
|
||||||
|
;dw -40, 56 : db $31, $02, $00, $00
|
||||||
|
;dw -32, 56 : db $02, $02, $00, $00
|
||||||
|
;dw -24, 56 : db $03, $02, $00, $00
|
||||||
|
;
|
||||||
|
;dw 0, 56 : db $12, $02, $00, $00
|
||||||
|
;dw 8, 56 : db $13, $02, $00, $00
|
||||||
|
;dw 16, 56 : db $22, $02, $00, $00
|
||||||
|
;dw 24, 56 : db $23, $02, $00, $00
|
||||||
|
;
|
||||||
|
;dw 48, 56 : db $32, $02, $00, $00
|
||||||
|
;dw 56, 56 : db $33, $02, $00, $00
|
||||||
|
;dw 64, 56 : db $30, $02, $00, $00
|
||||||
|
;dw 72, 56 : db $31, $02, $00, $00
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
109
zsnes.asm
Normal file
109
zsnes.asm
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
CheckZSNES:
|
||||||
|
SEP #$28
|
||||||
|
LDA #$FF
|
||||||
|
CLC
|
||||||
|
ADC #$FF
|
||||||
|
CMP #$64
|
||||||
|
CLD
|
||||||
|
BEQ .zsnes
|
||||||
|
REP #$20
|
||||||
|
LDA #$01FF : TCS ; thing we wrote over - initialize stack
|
||||||
|
JML.l ReturnCheckZSNES
|
||||||
|
.zsnes
|
||||||
|
; Set up video mode
|
||||||
|
SEP #$30 ; X,Y,A are 8 bit numbers
|
||||||
|
LDA #$80 ; screen off
|
||||||
|
STA $2100 ; brightness + screen enable register
|
||||||
|
LDA #$03
|
||||||
|
STA $2105 ; video mode 3, 8x8 tiles, 256 color BG1, 16 color BG2
|
||||||
|
STZ $2106 ; noplanes, no mosaic, = Mosaic register
|
||||||
|
LDA #$01
|
||||||
|
STA $210B ; Set BG1 tile data offset to $2000
|
||||||
|
STZ $210D ; Plane 0 scroll x (first 8 bits)
|
||||||
|
STZ $210D ; Plane 0 scroll x (last 3 bits) #$0 - #$07ff
|
||||||
|
LDA #$01
|
||||||
|
STA $212C ; Enable BG1
|
||||||
|
LDA #$FF
|
||||||
|
STA $210E ; Set BG1 scroll register
|
||||||
|
STA $210E
|
||||||
|
STZ $212E ; Window mask for Main Screen
|
||||||
|
STZ $212F ; Window mask for Sub Screen
|
||||||
|
LDA #$30
|
||||||
|
STA $2130 ; Color addition & screen addition init setting
|
||||||
|
STZ $2131 ; Add/Sub sub designation for screen, sprite, color
|
||||||
|
LDA #$E0
|
||||||
|
STA $2132 ; color data for addition/subtraction
|
||||||
|
STZ $2133 ; Screen setting (interlace x,y/enable SFX data)
|
||||||
|
STZ $4200 ; Disable V-blank, interrupt, Joypad register
|
||||||
|
|
||||||
|
REP #$10
|
||||||
|
|
||||||
|
|
||||||
|
; Load tilemap and tile data
|
||||||
|
STZ $2116
|
||||||
|
LDA #$0C
|
||||||
|
STA $2107 ; Set BG1 tilemap offset to $1800 and size to 32x32
|
||||||
|
STA $2117 ; VRAM write address $1800
|
||||||
|
|
||||||
|
LDA #$80
|
||||||
|
STA $2115 ; VRAM single word transfer, word increment
|
||||||
|
LDX #$1801
|
||||||
|
STX $4300 ; DMA destination: VMDATAL/VMDATAH, fixed source
|
||||||
|
LDX.w #ZSNES_TileMap
|
||||||
|
STX $4302 ; Low DMA source address
|
||||||
|
LDA.b #ZSNES_TileMap>>16
|
||||||
|
STA $4304 ; High DMA source address
|
||||||
|
LDX.w #$800
|
||||||
|
STX $4305 ; Transfer 2048 bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ; Start DMA transfer
|
||||||
|
|
||||||
|
LDX.w #ZSNES_Tiles
|
||||||
|
STX $4302 ; Low DMA source address
|
||||||
|
LDA.b #ZSNES_Tiles>>16
|
||||||
|
STA $4304 ; High DMA source address
|
||||||
|
LDX.w #$8000
|
||||||
|
STX $4305 ; Transfer 32768 bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ; Start DMA transfer
|
||||||
|
|
||||||
|
LDX.w #$8000
|
||||||
|
STX $4302 ; Low DMA source address
|
||||||
|
LDA.b #$38 ; (ZSNES_Tiles>>16)+1
|
||||||
|
STA $4304 ; High DMA source address
|
||||||
|
LDX.w #$6040
|
||||||
|
STX $4305 ; Transfer 24640 bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ; Start DMA transfer
|
||||||
|
|
||||||
|
; Load CGRAM via DMA transfer
|
||||||
|
|
||||||
|
STZ $2121 ; Start at color 0
|
||||||
|
LDX #$2200
|
||||||
|
STX $4300 ; DMA destination: CGDATA, byte increment
|
||||||
|
LDX.w #ZSNES_Palette
|
||||||
|
STX $4302 ; Low DMA source address
|
||||||
|
LDA.b #ZSNES_Palette>>16
|
||||||
|
STA $4304 ; High DMA source address
|
||||||
|
LDX #$0200
|
||||||
|
STX $4305 ; Transfer 512 bytes
|
||||||
|
LDA #$01
|
||||||
|
STA $420B ; Start DMA transfer
|
||||||
|
|
||||||
|
LDA #$0F ; screen on, full brightness
|
||||||
|
STA $2100 ; brightness + screen enable register
|
||||||
|
|
||||||
|
STP ; !
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $378000
|
||||||
|
|
||||||
|
ZSNES_Tiles:
|
||||||
|
incbin zsnes_tiles.bin
|
||||||
|
|
||||||
|
ZSNES_TileMap:
|
||||||
|
incbin zsnes_tilemap.bin
|
||||||
|
|
||||||
|
ZSNES_Palette:
|
||||||
|
incbin zsnes_pal.bin
|
||||||
|
|
||||||
BIN
zsnes_pal.bin
Normal file
BIN
zsnes_pal.bin
Normal file
Binary file not shown.
BIN
zsnes_tilemap.bin
Normal file
BIN
zsnes_tilemap.bin
Normal file
Binary file not shown.
BIN
zsnes_tiles.bin
Normal file
BIN
zsnes_tiles.bin
Normal file
Binary file not shown.
Reference in New Issue
Block a user