mirror of
https://github.com/badvision/lawless-legends.git
synced 2024-11-17 16:06:18 +00:00
C64: 2d proof of concept demo
This commit is contained in:
parent
93efce12eb
commit
c32a533cc9
22
Platform/C64/README.txt
Normal file
22
Platform/C64/README.txt
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
Screen memory specification:
|
||||||
|
|
||||||
|
Screen is available in Bank #1 ($4000 - $7FFF)
|
||||||
|
Bitmap is available from $6000 to $7F3F
|
||||||
|
Video Color RAM is available from $5C00 to $5FF7
|
||||||
|
Color RAM is available from $D800 to $DBE7 (this range is a default Color RAM range on a C64, cannot be changed)
|
||||||
|
|
||||||
|
Sprite pointers are available from $5FF8 to $5FFF
|
||||||
|
Sprites are available from $5b80 to $5bff (just two sprites)
|
||||||
|
|
||||||
|
Features:
|
||||||
|
Graphic displayed in multicolor bitmap mode
|
||||||
|
Map size can be freely changed (size of map is saved in header)
|
||||||
|
64 tiles (each tile contains 4 characters (8x8 pixels each in multicolor mode))
|
||||||
|
Joystick and keyboard control (WASD keys)
|
||||||
|
Text can be added to any location
|
||||||
|
Added some fonts
|
||||||
|
|
||||||
|
Tools used:
|
||||||
|
64tass compiler
|
||||||
|
GangEd for tiles (data saved separately as videomem, colormem and bitmap) and fonts
|
||||||
|
SpritePad for sprites
|
BIN
Platform/C64/data/fonts.GEP
Normal file
BIN
Platform/C64/data/fonts.GEP
Normal file
Binary file not shown.
BIN
Platform/C64/data/sprites.spd
Normal file
BIN
Platform/C64/data/sprites.spd
Normal file
Binary file not shown.
BIN
Platform/C64/data/tiles.GEP
Normal file
BIN
Platform/C64/data/tiles.GEP
Normal file
Binary file not shown.
BIN
Platform/C64/demos/2d-demo-2015-05-21.prg
Normal file
BIN
Platform/C64/demos/2d-demo-2015-05-21.prg
Normal file
Binary file not shown.
BIN
Platform/C64/demos/2d-demo-2015-05-23.prg
Normal file
BIN
Platform/C64/demos/2d-demo-2015-05-23.prg
Normal file
Binary file not shown.
298
Platform/C64/src/2d.asm
Normal file
298
Platform/C64/src/2d.asm
Normal file
@ -0,0 +1,298 @@
|
|||||||
|
|
||||||
|
RASTER_TOP_FRAME=170
|
||||||
|
REGISTER_01=%00110101 ;#$35 (53)
|
||||||
|
|
||||||
|
mapPosX = $0a ;and $0b
|
||||||
|
mapPosY = $0c ;and $0d
|
||||||
|
mapSizeX = $0e ;and $0f
|
||||||
|
mapSizeY = $10 ;$and 11
|
||||||
|
|
||||||
|
tile = $12
|
||||||
|
x = $13
|
||||||
|
y = $14
|
||||||
|
|
||||||
|
tileBitmapPointer_LO = $15
|
||||||
|
tileBitmapPointer_HI = $16
|
||||||
|
mapBitmapPointer_LO = $17
|
||||||
|
mapBitmapPointer_HI = $18
|
||||||
|
mapBitmapPointer2_LO = $19
|
||||||
|
mapBitmapPointer2_HI = $1a
|
||||||
|
screenVideoRamPointer_LO = $1b
|
||||||
|
screenVideoRamPointer_HI = $1c
|
||||||
|
colorRamPointer_LO = $1d
|
||||||
|
colorRamPointer_HI = $1e
|
||||||
|
|
||||||
|
posX = $1f ;Sprite position X
|
||||||
|
posY = $20 ;Sprite position Y
|
||||||
|
|
||||||
|
mapSizeXAdc = $21 ;and $22
|
||||||
|
mapPointer_LO = $23
|
||||||
|
mapPointer_HI = $24
|
||||||
|
|
||||||
|
mapPosXMax = $25 ;and $26
|
||||||
|
mapPosYMax = $27 ;and $28
|
||||||
|
|
||||||
|
movementBuffer = $29
|
||||||
|
|
||||||
|
textCursor = $2a
|
||||||
|
|
||||||
|
calculateDiffer_LO = $2b
|
||||||
|
calculateDiffer_HI = $2c
|
||||||
|
|
||||||
|
locationX = $2d ;and $2e
|
||||||
|
locationY = $2f ;and $30
|
||||||
|
|
||||||
|
textPointerData_LO = $31
|
||||||
|
textPointerData_HI = $32
|
||||||
|
|
||||||
|
mapOffsetPointer_LO = $33
|
||||||
|
mapOffsetPointer_HI = $34
|
||||||
|
|
||||||
|
playerPosition_LO = $35
|
||||||
|
playerPosition_HI = $36
|
||||||
|
|
||||||
|
BANK_START_ADDR=$4000 ;$4000 - $7FFF
|
||||||
|
SCREEN=$6000 ;Bitmap range: $6000 - $7F3F
|
||||||
|
SCREEN_VIDEO_RAM=$5C00 ;Screen Video RAM range: $5C00 - $5FFF
|
||||||
|
SCREEN_COLOR_RAM=$d800 ;Screen Color RAM range: $d800 - $dbe7
|
||||||
|
|
||||||
|
;View Port: size of 18 x 18 characters
|
||||||
|
VIEWPORT_BITMAP_OFFSET=320*3+16
|
||||||
|
VIEWPORT_SCREEN_OFFSET=40*3+2
|
||||||
|
|
||||||
|
;Text Port: size of 16 x 14 characters
|
||||||
|
TEXTPORT_BITMAP_OFFSET=320*3+16+8*20
|
||||||
|
TEXTPORT_SCREEN_OFFSET=40*3+2+20
|
||||||
|
|
||||||
|
SPRITE_POINTER=SCREEN_VIDEO_RAM+$03F8
|
||||||
|
SPRITES=$5b80
|
||||||
|
SPRITE_BASE=(SPRITES - BANK_START_ADDR) / 64 ;calculate where first pointer to sprite bank is located
|
||||||
|
|
||||||
|
TILES=$8000 ;Max: 64 tiles, each tile contains 4 quadrates (each quadrates 8x8 pixel size)
|
||||||
|
TILES_VIDEO_RAM=TILES+64*4*8
|
||||||
|
TILES_COLOR_RAM=TILES_VIDEO_RAM+64*4
|
||||||
|
|
||||||
|
FONTS=$9000
|
||||||
|
|
||||||
|
MAP_DATA=$3000
|
||||||
|
|
||||||
|
MSX=$A000 ;somewhere around $A000 - $BFFF we will go with music if any (8k free for zaks)
|
||||||
|
|
||||||
|
MOVEMENT_DELAY = #6
|
||||||
|
|
||||||
|
*=$0801
|
||||||
|
.word ss,10
|
||||||
|
.null $9e,^start
|
||||||
|
ss .word 0
|
||||||
|
start
|
||||||
|
|
||||||
|
sei ;Disable IRQ's
|
||||||
|
|
||||||
|
lda #$7f ;Disable CIA IRQ's
|
||||||
|
sta $dc0d ;Disable timer interrupts
|
||||||
|
sta $dd0d
|
||||||
|
|
||||||
|
lda #REGISTER_01 ;Bank out kernal and basic ($e000-$ffff)
|
||||||
|
sta $01
|
||||||
|
|
||||||
|
lda #<Top_Frame_IRQ ;Install RASTER IRQ
|
||||||
|
ldx #>Top_Frame_IRQ ;into Hardware
|
||||||
|
sta $fffe ;Interrupt Vector
|
||||||
|
stx $ffff
|
||||||
|
|
||||||
|
lda #$01
|
||||||
|
sta $d01a ;Enable RASTER IRQs
|
||||||
|
|
||||||
|
lda #RASTER_TOP_FRAME ;IRQ on line RASTER_TOP_FRAME
|
||||||
|
sta $d012
|
||||||
|
|
||||||
|
asl $d019 ;acknowledge video interrupts
|
||||||
|
bit $dc0d ;acknowledge CIA interrupts
|
||||||
|
bit $dd0d
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta $d020
|
||||||
|
sta $d021
|
||||||
|
|
||||||
|
sta mapPosX
|
||||||
|
sta mapPosX+1
|
||||||
|
sta mapPosY
|
||||||
|
sta mapPosY+1
|
||||||
|
sta mapSizeXAdc
|
||||||
|
sta mapSizeXAdc+1
|
||||||
|
|
||||||
|
sta movementBuffer
|
||||||
|
|
||||||
|
lda #4
|
||||||
|
sta posX
|
||||||
|
sta posY
|
||||||
|
|
||||||
|
;Get map size
|
||||||
|
lda MAP_DATA
|
||||||
|
sta mapSizeX
|
||||||
|
lda MAP_DATA+1
|
||||||
|
sta mapSizeX+1
|
||||||
|
|
||||||
|
lda MAP_DATA+2
|
||||||
|
sta mapSizeY
|
||||||
|
lda MAP_DATA+3
|
||||||
|
sta mapSizeY+1
|
||||||
|
|
||||||
|
;Get map boundaries
|
||||||
|
lda MAP_DATA ;first for x
|
||||||
|
sec
|
||||||
|
sbc #8
|
||||||
|
sta mapPosXMax
|
||||||
|
lda MAP_DATA+1
|
||||||
|
sec
|
||||||
|
sbc #0
|
||||||
|
sta mapPosXMax+1
|
||||||
|
|
||||||
|
lda MAP_DATA+2 ;then for y
|
||||||
|
sec
|
||||||
|
sbc #8
|
||||||
|
sta mapPosYMax
|
||||||
|
lda MAP_DATA+3
|
||||||
|
sec
|
||||||
|
sbc #0
|
||||||
|
sta mapPosYMax+1
|
||||||
|
|
||||||
|
;Set length of a single row
|
||||||
|
clc
|
||||||
|
lda mapSizeX
|
||||||
|
adc #1
|
||||||
|
sta mapSizeXAdc
|
||||||
|
lda mapSizeX+1
|
||||||
|
adc #0
|
||||||
|
sta mapSizeXAdc+1
|
||||||
|
|
||||||
|
;Clear View Port Screen
|
||||||
|
lda #0
|
||||||
|
ldx #160
|
||||||
|
clearViewPortLoop
|
||||||
|
.for part=0, part<=49, part=part+1
|
||||||
|
sta SCREEN + part*160-1,x
|
||||||
|
.next
|
||||||
|
dex
|
||||||
|
|
||||||
|
beq +
|
||||||
|
jmp clearViewPortLoop
|
||||||
|
+
|
||||||
|
|
||||||
|
;Clear Text Port Screen
|
||||||
|
lda #1
|
||||||
|
|
||||||
|
ldy #16
|
||||||
|
|
||||||
|
-
|
||||||
|
.for part=0, part<=13, part=part+1
|
||||||
|
sta SCREEN_VIDEO_RAM + TEXTPORT_SCREEN_OFFSET -1 + part*40,y
|
||||||
|
sta SCREEN_COLOR_RAM + TEXTPORT_SCREEN_OFFSET -1 + part*40,y
|
||||||
|
.next
|
||||||
|
dey
|
||||||
|
bne -
|
||||||
|
|
||||||
|
|
||||||
|
;Set Screen Bank
|
||||||
|
lda #$3b
|
||||||
|
sta $d011 ;Enable Bitmap Mode
|
||||||
|
|
||||||
|
lda #$18
|
||||||
|
sta $d016 ;Enable Multicolor Mode
|
||||||
|
|
||||||
|
;Set Bank #1 (from $4000 - $7FFF)
|
||||||
|
lda #%00000010
|
||||||
|
sta $dd00
|
||||||
|
|
||||||
|
;Set Video Memory for $2C00 offset ($5C00 - $5FFF for bits 4-7 = %0111) and second half of bank for bitmap (bits 1-3 = %100)
|
||||||
|
lda #%01111000
|
||||||
|
sta $d018
|
||||||
|
|
||||||
|
cli ;Allow IRQ's
|
||||||
|
|
||||||
|
;Draw a map
|
||||||
|
jsr drawMap
|
||||||
|
|
||||||
|
;Set sprites
|
||||||
|
lda #SPRITE_BASE+0
|
||||||
|
sta SPRITE_POINTER+1
|
||||||
|
|
||||||
|
lda #SPRITE_BASE+1
|
||||||
|
sta SPRITE_POINTER+0
|
||||||
|
|
||||||
|
;Enable sprites
|
||||||
|
lda #1+2
|
||||||
|
sta $d015
|
||||||
|
|
||||||
|
;Set multicolor mode for sprites
|
||||||
|
lda $d01c
|
||||||
|
ora #$FF
|
||||||
|
sta $d01c
|
||||||
|
|
||||||
|
;Set sprites colours
|
||||||
|
lda #8
|
||||||
|
sta $d027+0
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta $d027+1
|
||||||
|
|
||||||
|
;Set global multi colours for sprites
|
||||||
|
lda #3
|
||||||
|
sta $d025
|
||||||
|
lda #1
|
||||||
|
sta $d026
|
||||||
|
|
||||||
|
;Set sprites hi byte positions
|
||||||
|
lda #%00000000
|
||||||
|
sta $d010
|
||||||
|
|
||||||
|
;no graphic overlay on sprites
|
||||||
|
lda #%00000000
|
||||||
|
sta $d01b
|
||||||
|
|
||||||
|
;Set player on the screen
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
|
||||||
|
;Infinity Loop!
|
||||||
|
jmp *
|
||||||
|
|
||||||
|
;IRQs
|
||||||
|
.include "includes/irqs/topFrameIRQ.asm"
|
||||||
|
|
||||||
|
;Includes
|
||||||
|
.include "includes/drawMap.asm"
|
||||||
|
.include "includes/drawTile.asm"
|
||||||
|
.include "includes/drawPlayer.asm"
|
||||||
|
.include "includes/searchText.asm"
|
||||||
|
.include "includes/drawText.asm"
|
||||||
|
.include "includes/checkTerrain.asm"
|
||||||
|
|
||||||
|
;Tables
|
||||||
|
.include "includes/tables/drawTileTables.asm"
|
||||||
|
.include "includes/tables/playerPositionTables.asm"
|
||||||
|
.include "includes/tables/textTables.asm"
|
||||||
|
|
||||||
|
*=TILES
|
||||||
|
.binary "binary/bitmap.PRG",2,64*4*8
|
||||||
|
|
||||||
|
*=TILES_VIDEO_RAM
|
||||||
|
.binary "binary/videomem.PRG",2,64*4
|
||||||
|
|
||||||
|
*=TILES_COLOR_RAM
|
||||||
|
.binary "binary/colormem.PRG",2,64*4
|
||||||
|
|
||||||
|
*=FONTS
|
||||||
|
.binary "binary/fonts.PRG",2,8*26+8*26+8*3
|
||||||
|
|
||||||
|
*=MAP_DATA
|
||||||
|
;.binary "binary/map.bin" ;TODO: As we have no map file yet, let's use fake map for test purposes
|
||||||
|
.include "binary/map.asm"
|
||||||
|
|
||||||
|
*=SPRITES
|
||||||
|
.binary "binary/sprites.raw",0,64*2 ;only two sprites!
|
||||||
|
|
||||||
|
Raster_Indicator
|
||||||
|
.byte 0
|
||||||
|
Raster_Indicator_Key_Pressed
|
||||||
|
.byte 0
|
BIN
Platform/C64/src/binary/bitmap.PRG
Normal file
BIN
Platform/C64/src/binary/bitmap.PRG
Normal file
Binary file not shown.
BIN
Platform/C64/src/binary/colormem.PRG
Normal file
BIN
Platform/C64/src/binary/colormem.PRG
Normal file
Binary file not shown.
BIN
Platform/C64/src/binary/fonts.PRG
Normal file
BIN
Platform/C64/src/binary/fonts.PRG
Normal file
Binary file not shown.
55
Platform/C64/src/binary/map.asm
Normal file
55
Platform/C64/src/binary/map.asm
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
MAP_HEADER
|
||||||
|
.byte 29, 0 ;Size X of map (LO, HI)
|
||||||
|
.byte 29, 0 ;Size Y of map (LO, HI)
|
||||||
|
|
||||||
|
MAP
|
||||||
|
.byte 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1
|
||||||
|
.byte 1, 2, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 3, 1, 3, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 3, 3, 0, 0, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 2, 2, 0, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 2, 0, 3, 3, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 2, 2, 3, 3, 3, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 3, 3, 3, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 3, 3, 2, 2, 2, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 3, 3, 2, 2, 2, 2, 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 3, 2, 63, 2, 3, 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 3, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
|
||||||
|
.byte 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
|
||||||
|
.byte 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1
|
||||||
|
|
||||||
|
TEXT_HEADER
|
||||||
|
.byte 2 ;How many text places
|
||||||
|
|
||||||
|
TEXT_POINTERS ;(LO/HI)
|
||||||
|
.byte 4, 0, 4, 0, <text1, >text1
|
||||||
|
.byte 5, 0, $a, 0, <text2, >text2
|
||||||
|
|
||||||
|
TEXTS
|
||||||
|
text1
|
||||||
|
.byte 26, 54, 18, 20, 1, 19, 11, 4, 54, 1, 17, 4, 4, 25, 4, 54
|
||||||
|
.byte 18, 19, 8, 17, 18, 54, 3, 20, 18, 19, 54, 54, 54, 54, 54, 54
|
||||||
|
.byte 0, 2, 17, 14, 18, 18, 54, 19, 7, 4, 54, 3, 17, 24, 54, 54
|
||||||
|
.byte 3, 4, 18, 4, 17, 19, 54, 5, 11, 14, 14, 17, 52
|
||||||
|
.byte $FF
|
||||||
|
|
||||||
|
text2
|
||||||
|
.byte 26, 54, 2, 7, 4, 18, 19, 52
|
||||||
|
.byte $FF
|
BIN
Platform/C64/src/binary/sprites.raw
Normal file
BIN
Platform/C64/src/binary/sprites.raw
Normal file
Binary file not shown.
BIN
Platform/C64/src/binary/videomem.PRG
Normal file
BIN
Platform/C64/src/binary/videomem.PRG
Normal file
Binary file not shown.
56
Platform/C64/src/includes/checkTerrain.asm
Normal file
56
Platform/C64/src/includes/checkTerrain.asm
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
checkTerrainLeft
|
||||||
|
lda playerPosition_LO
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
sta mapPointer_LO
|
||||||
|
lda playerPosition_HI
|
||||||
|
sbc #0
|
||||||
|
sta mapPointer_HI
|
||||||
|
jmp checkTerrain
|
||||||
|
|
||||||
|
checkTerrainRight
|
||||||
|
lda playerPosition_LO
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
sta mapPointer_LO
|
||||||
|
lda playerPosition_HI
|
||||||
|
adc #0
|
||||||
|
sta mapPointer_HI
|
||||||
|
jmp checkTerrain
|
||||||
|
|
||||||
|
checkTerrainUp
|
||||||
|
lda playerPosition_LO
|
||||||
|
sec
|
||||||
|
sbc mapSizeXAdc
|
||||||
|
sta mapPointer_LO
|
||||||
|
lda playerPosition_HI
|
||||||
|
sbc mapSizeXAdc+1
|
||||||
|
sta mapPointer_HI
|
||||||
|
jmp checkTerrain
|
||||||
|
|
||||||
|
checkTerrainDown
|
||||||
|
lda playerPosition_LO
|
||||||
|
clc
|
||||||
|
adc mapSizeXAdc
|
||||||
|
sta mapPointer_LO
|
||||||
|
lda playerPosition_HI
|
||||||
|
adc mapSizeXAdc+1
|
||||||
|
sta mapPointer_HI
|
||||||
|
jmp checkTerrain
|
||||||
|
|
||||||
|
checkTerrain
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
lda (mapPointer_LO),y
|
||||||
|
cmp #1
|
||||||
|
beq cannotAccess
|
||||||
|
|
||||||
|
;Can access
|
||||||
|
lda #1
|
||||||
|
rts
|
||||||
|
|
||||||
|
cannotAccess
|
||||||
|
;Cannot access
|
||||||
|
lda #0
|
||||||
|
rts
|
94
Platform/C64/src/includes/drawMap.asm
Normal file
94
Platform/C64/src/includes/drawMap.asm
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
drawMap
|
||||||
|
|
||||||
|
lda Raster_Indicator
|
||||||
|
beq +
|
||||||
|
lda #2
|
||||||
|
sta $d020
|
||||||
|
+
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda #<MAP
|
||||||
|
adc mapPosX
|
||||||
|
sta mapPointer_LO
|
||||||
|
lda #>MAP
|
||||||
|
adc mapPosX+1
|
||||||
|
sta mapPointer_HI
|
||||||
|
|
||||||
|
;Increment map pointer by a multiplication of row length if map Y position more than 0
|
||||||
|
lda mapPosY+1
|
||||||
|
bne setCalculateDiffer
|
||||||
|
lda mapPosY
|
||||||
|
beq +
|
||||||
|
|
||||||
|
setCalculateDiffer
|
||||||
|
;Set differ
|
||||||
|
lda mapPosY
|
||||||
|
sta calculateDiffer_LO
|
||||||
|
lda mapPosY+1
|
||||||
|
sta calculateDiffer_HI
|
||||||
|
|
||||||
|
calculateY
|
||||||
|
|
||||||
|
;Calculate row on the map (length of rows vary for a particular map so it cannot be pre-calculated in table)
|
||||||
|
clc
|
||||||
|
lda mapPointer_LO
|
||||||
|
adc mapSizeXAdc
|
||||||
|
sta mapPointer_LO
|
||||||
|
|
||||||
|
lda mapPointer_HI
|
||||||
|
adc mapSizeXAdc+1
|
||||||
|
sta mapPointer_HI
|
||||||
|
|
||||||
|
lda calculateDiffer_LO
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
sta calculateDiffer_LO
|
||||||
|
lda calculateDiffer_HI
|
||||||
|
sbc #0
|
||||||
|
sta calculateDiffer_HI
|
||||||
|
|
||||||
|
;Is it everything?
|
||||||
|
calculateDiffer
|
||||||
|
lda calculateDiffer_LO
|
||||||
|
bne calculateY
|
||||||
|
lda calculateDiffer_HI
|
||||||
|
bne calculateY
|
||||||
|
|
||||||
|
|
||||||
|
+
|
||||||
|
|
||||||
|
;Remember offset of a map, used for checking terrain type
|
||||||
|
clc
|
||||||
|
lda mapPointer_LO
|
||||||
|
sta mapOffsetPointer_LO
|
||||||
|
lda mapPointer_HI
|
||||||
|
sta mapOffsetPointer_HI
|
||||||
|
|
||||||
|
.for row=0,row<=8,row=row+1
|
||||||
|
.for tileN=0,tileN<=8,tileN=tileN+1
|
||||||
|
ldy #0 + tileN
|
||||||
|
lda (mapPointer_LO),y
|
||||||
|
ldx #0 + tileN
|
||||||
|
ldy #0 + row
|
||||||
|
jsr drawTile
|
||||||
|
.next
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda mapPointer_LO
|
||||||
|
adc mapSizeXAdc
|
||||||
|
sta mapPointer_LO
|
||||||
|
|
||||||
|
lda mapPointer_HI
|
||||||
|
adc mapSizeXAdc+1
|
||||||
|
sta mapPointer_HI
|
||||||
|
|
||||||
|
.next
|
||||||
|
|
||||||
|
lda Raster_Indicator
|
||||||
|
beq +
|
||||||
|
lda #0
|
||||||
|
sta $d020
|
||||||
|
+
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
13
Platform/C64/src/includes/drawPlayer.asm
Normal file
13
Platform/C64/src/includes/drawPlayer.asm
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
|
||||||
|
setPlayer
|
||||||
|
ldy posX
|
||||||
|
lda playerPosTableX,y
|
||||||
|
sta $d000
|
||||||
|
sta $d002
|
||||||
|
|
||||||
|
ldy posY
|
||||||
|
lda playerPosTableY,y
|
||||||
|
sta $d001
|
||||||
|
sta $d003
|
||||||
|
|
||||||
|
rts
|
59
Platform/C64/src/includes/drawText.asm
Normal file
59
Platform/C64/src/includes/drawText.asm
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
drawText
|
||||||
|
|
||||||
|
stx textPointer+1
|
||||||
|
sty textPointer+2
|
||||||
|
|
||||||
|
lda #$FF
|
||||||
|
sta textCursor
|
||||||
|
|
||||||
|
drawTextLoop
|
||||||
|
inc textCursor
|
||||||
|
ldy textCursor
|
||||||
|
textPointer
|
||||||
|
lda $1234,y
|
||||||
|
cmp #$FF
|
||||||
|
beq drawTextDone
|
||||||
|
sta letter+1
|
||||||
|
|
||||||
|
ldy textCursor
|
||||||
|
|
||||||
|
lda textPortTable_LO,y
|
||||||
|
sta textPortPointer+1
|
||||||
|
lda textPortTable_HI,y
|
||||||
|
sta textPortPointer+2
|
||||||
|
|
||||||
|
lda textPortColorTable_LO,y
|
||||||
|
sta textPortColor+1
|
||||||
|
lda textPortColorTable_HI,y
|
||||||
|
sta textPortColor+2
|
||||||
|
|
||||||
|
;Draw a letter
|
||||||
|
letter
|
||||||
|
ldy #0
|
||||||
|
lda fontsTable_LO,y
|
||||||
|
sta fontPointer+1
|
||||||
|
lda fontsTable_HI,y
|
||||||
|
sta fontPointer+2
|
||||||
|
|
||||||
|
ldy #8
|
||||||
|
-
|
||||||
|
|
||||||
|
;Switch colour on for this letter
|
||||||
|
lda #1
|
||||||
|
textPortColor
|
||||||
|
sta $1234
|
||||||
|
|
||||||
|
fontPointer
|
||||||
|
lda $1234,y
|
||||||
|
textPortPointer
|
||||||
|
sta $1234,y
|
||||||
|
dey
|
||||||
|
bne -
|
||||||
|
|
||||||
|
jmp drawTextLoop
|
||||||
|
|
||||||
|
drawTextDone
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
118
Platform/C64/src/includes/drawTile.asm
Normal file
118
Platform/C64/src/includes/drawTile.asm
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
;Draw tile
|
||||||
|
drawTile
|
||||||
|
|
||||||
|
sta tile
|
||||||
|
stx x
|
||||||
|
sty y
|
||||||
|
|
||||||
|
;Get a tile
|
||||||
|
tay
|
||||||
|
lda tilesBitmapTable_LO,y
|
||||||
|
sta tileBitmapPointer_LO
|
||||||
|
lda tilesBitmapTable_HI,y
|
||||||
|
sta tileBitmapPointer_HI
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda y
|
||||||
|
tay
|
||||||
|
lda multiplyBy9,y ;Multiply y by 9
|
||||||
|
adc x
|
||||||
|
tay
|
||||||
|
|
||||||
|
|
||||||
|
lda mapBitmapTable_LO,y
|
||||||
|
sta mapBitmapPointer_LO
|
||||||
|
lda mapBitmapTable_HI,y
|
||||||
|
sta mapBitmapPointer_HI
|
||||||
|
|
||||||
|
lda mapBitmapTable2_LO,y
|
||||||
|
sta mapBitmapPointer2_LO
|
||||||
|
lda mapBitmapTable2_HI,y
|
||||||
|
sta mapBitmapPointer2_HI
|
||||||
|
|
||||||
|
lda screenVideoRamTable_LO,y
|
||||||
|
sta screenVideoRamPointer_LO
|
||||||
|
lda screenVideoRamTable_HI,y
|
||||||
|
sta screenVideoRamPointer_HI
|
||||||
|
|
||||||
|
lda colorRamTable_LO,y
|
||||||
|
sta colorRamPointer_LO
|
||||||
|
lda colorRamTable_HI,y
|
||||||
|
sta colorRamPointer_HI
|
||||||
|
|
||||||
|
ldy #16
|
||||||
|
-
|
||||||
|
lda (tileBitmapPointer_LO),y
|
||||||
|
sta (mapBitmapPointer_LO),y
|
||||||
|
|
||||||
|
dey
|
||||||
|
bne -
|
||||||
|
|
||||||
|
ldx #16
|
||||||
|
ldy #32
|
||||||
|
-
|
||||||
|
lda (tileBitmapPointer_LO),y
|
||||||
|
sta (mapBitmapPointer2_LO),y
|
||||||
|
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
;Draw Video RAM
|
||||||
|
lda tile
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
lda TILES_VIDEO_RAM,x
|
||||||
|
sta (screenVideoRamPointer_LO),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
ldy #1
|
||||||
|
|
||||||
|
lda TILES_VIDEO_RAM,x
|
||||||
|
sta (screenVideoRamPointer_LO),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
ldy #40
|
||||||
|
|
||||||
|
lda TILES_VIDEO_RAM,x
|
||||||
|
sta (screenVideoRamPointer_LO),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
ldy #41
|
||||||
|
|
||||||
|
lda TILES_VIDEO_RAM,x
|
||||||
|
sta (screenVideoRamPointer_LO),y
|
||||||
|
|
||||||
|
;Draw Color RAM
|
||||||
|
dex
|
||||||
|
dex
|
||||||
|
dex
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
lda TILES_COLOR_RAM,x
|
||||||
|
sta (colorRamPointer_LO),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
ldy #1
|
||||||
|
|
||||||
|
lda TILES_COLOR_RAM,x
|
||||||
|
sta (colorRamPointer_LO),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
ldy #40
|
||||||
|
|
||||||
|
lda TILES_COLOR_RAM,x
|
||||||
|
sta (colorRamPointer_LO),y
|
||||||
|
|
||||||
|
inx
|
||||||
|
ldy #41
|
||||||
|
|
||||||
|
lda TILES_COLOR_RAM,x
|
||||||
|
sta (colorRamPointer_LO),y
|
||||||
|
rts
|
||||||
|
|
281
Platform/C64/src/includes/irqs/topFrameIRQ.asm
Normal file
281
Platform/C64/src/includes/irqs/topFrameIRQ.asm
Normal file
@ -0,0 +1,281 @@
|
|||||||
|
|
||||||
|
Top_Frame_IRQ
|
||||||
|
pha ;store register A in stack
|
||||||
|
txa
|
||||||
|
pha ;store register X in stack
|
||||||
|
tya
|
||||||
|
pha
|
||||||
|
|
||||||
|
inc $d019
|
||||||
|
|
||||||
|
lda Raster_Indicator
|
||||||
|
beq +
|
||||||
|
lda #2
|
||||||
|
sta $d020
|
||||||
|
+
|
||||||
|
|
||||||
|
lda movementBuffer
|
||||||
|
beq calculatePlayerPosition
|
||||||
|
dec movementBuffer
|
||||||
|
jmp moveFinished
|
||||||
|
|
||||||
|
calculatePlayerPosition ;calculate position of player for further operations like checkTerrain procedure
|
||||||
|
clc
|
||||||
|
lda mapOffsetPointer_LO
|
||||||
|
adc posX
|
||||||
|
sta playerPosition_LO
|
||||||
|
lda mapOffsetPointer_HI
|
||||||
|
adc #0
|
||||||
|
sta playerPosition_HI
|
||||||
|
|
||||||
|
ldy posY
|
||||||
|
beq +
|
||||||
|
-
|
||||||
|
clc
|
||||||
|
lda playerPosition_LO
|
||||||
|
adc mapSizeXAdc
|
||||||
|
sta playerPosition_LO
|
||||||
|
|
||||||
|
lda playerPosition_HI
|
||||||
|
adc mapSizeXAdc+1
|
||||||
|
sta playerPosition_HI
|
||||||
|
|
||||||
|
dey
|
||||||
|
bne -
|
||||||
|
+
|
||||||
|
|
||||||
|
checkIsUp
|
||||||
|
lda #%00000001 ;when joystick up
|
||||||
|
bit $dc00
|
||||||
|
beq +
|
||||||
|
lda #%11111101 ;when key "W" hit
|
||||||
|
sta $dc00
|
||||||
|
lda $dc01
|
||||||
|
cmp #%11111101
|
||||||
|
bne checkIsLeft
|
||||||
|
|
||||||
|
+
|
||||||
|
;Joystick Up
|
||||||
|
jsr checkTerrainUp
|
||||||
|
bne +
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda MOVEMENT_DELAY
|
||||||
|
sta movementBuffer
|
||||||
|
|
||||||
|
lda mapPosY
|
||||||
|
cmp #1
|
||||||
|
bcc ++
|
||||||
|
|
||||||
|
lda posY
|
||||||
|
cmp #5
|
||||||
|
bcs ++
|
||||||
|
|
||||||
|
dec mapPosY
|
||||||
|
lda mapPosY
|
||||||
|
cmp #$FF
|
||||||
|
bne +
|
||||||
|
dec mapPosY+1
|
||||||
|
+
|
||||||
|
jsr drawMap
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda posY
|
||||||
|
beq +
|
||||||
|
dec posY
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
+
|
||||||
|
jmp moveFinished
|
||||||
|
|
||||||
|
checkIsLeft
|
||||||
|
lda #%00000100 ;when joystick left
|
||||||
|
bit $dc00
|
||||||
|
beq +
|
||||||
|
lda #%11111101 ;when key "A" hit
|
||||||
|
sta $dc00
|
||||||
|
lda $dc01
|
||||||
|
cmp #%11111011
|
||||||
|
bne checkIsRight
|
||||||
|
+
|
||||||
|
;Joystick Left
|
||||||
|
jsr checkTerrainLeft
|
||||||
|
bne +
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda MOVEMENT_DELAY
|
||||||
|
sta movementBuffer
|
||||||
|
|
||||||
|
lda mapPosX
|
||||||
|
cmp #1
|
||||||
|
bcc ++
|
||||||
|
|
||||||
|
lda posX
|
||||||
|
cmp #5
|
||||||
|
bcs ++
|
||||||
|
|
||||||
|
dec mapPosX
|
||||||
|
lda mapPosX
|
||||||
|
cmp #$FF
|
||||||
|
bne +
|
||||||
|
dec mapPosX+1
|
||||||
|
+
|
||||||
|
jsr drawMap
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda posX
|
||||||
|
beq +
|
||||||
|
dec posX
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
+
|
||||||
|
jmp moveFinished
|
||||||
|
|
||||||
|
checkIsRight
|
||||||
|
lda #%00001000 ;when joystick right
|
||||||
|
bit $dc00
|
||||||
|
beq +
|
||||||
|
lda #%11111011 ;when key "D" hit
|
||||||
|
sta $dc00
|
||||||
|
lda $dc01
|
||||||
|
cmp #%11111011
|
||||||
|
bne checkIsDown
|
||||||
|
+
|
||||||
|
|
||||||
|
;Joystick Right
|
||||||
|
jsr checkTerrainRight
|
||||||
|
bne +
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda MOVEMENT_DELAY
|
||||||
|
sta movementBuffer
|
||||||
|
|
||||||
|
lda mapPosX+1
|
||||||
|
cmp mapPosXMax+1
|
||||||
|
bcc +
|
||||||
|
|
||||||
|
lda mapPosX
|
||||||
|
cmp mapPosXMax
|
||||||
|
bcs +++
|
||||||
|
|
||||||
|
+
|
||||||
|
lda posX
|
||||||
|
cmp #4
|
||||||
|
bcc ++
|
||||||
|
|
||||||
|
inc mapPosX
|
||||||
|
bne +
|
||||||
|
inc mapPosX+1
|
||||||
|
+
|
||||||
|
jsr drawMap
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda posX
|
||||||
|
cmp #8
|
||||||
|
beq +
|
||||||
|
inc posX
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
+
|
||||||
|
jmp moveFinished
|
||||||
|
|
||||||
|
checkIsDown
|
||||||
|
lda #%00000010 ;when joystick down
|
||||||
|
bit $dc00
|
||||||
|
beq +
|
||||||
|
lda #%11111101 ;when key "S" hit
|
||||||
|
sta $dc00
|
||||||
|
lda $dc01
|
||||||
|
cmp #%11011111
|
||||||
|
bne moveFinished
|
||||||
|
+
|
||||||
|
;Joystick Down
|
||||||
|
jsr checkTerrainDown
|
||||||
|
bne +
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda MOVEMENT_DELAY
|
||||||
|
sta movementBuffer
|
||||||
|
|
||||||
|
lda mapPosY+1
|
||||||
|
cmp mapPosYMax+1
|
||||||
|
bcc +
|
||||||
|
|
||||||
|
lda mapPosY
|
||||||
|
cmp mapPosYMax
|
||||||
|
bcs +++
|
||||||
|
|
||||||
|
+
|
||||||
|
lda posY
|
||||||
|
cmp #4
|
||||||
|
bcc ++
|
||||||
|
|
||||||
|
inc mapPosY
|
||||||
|
bne +
|
||||||
|
inc mapPosY+1
|
||||||
|
+
|
||||||
|
jsr drawMap
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
jmp moveFinished
|
||||||
|
+
|
||||||
|
lda posY
|
||||||
|
cmp #8
|
||||||
|
beq +
|
||||||
|
inc posY
|
||||||
|
jsr setPlayer
|
||||||
|
jsr searchText
|
||||||
|
+
|
||||||
|
jmp moveFinished
|
||||||
|
|
||||||
|
moveFinished
|
||||||
|
|
||||||
|
lda #$FB ;when key "R" hit
|
||||||
|
sta $dc00
|
||||||
|
lda $dc01
|
||||||
|
cmp #$FD
|
||||||
|
bne Free_Raster_Indicator_Key_Pressed
|
||||||
|
lda Raster_Indicator_Key_Pressed
|
||||||
|
bne +
|
||||||
|
lda #1
|
||||||
|
sta Raster_Indicator_Key_Pressed
|
||||||
|
|
||||||
|
;Display raster lines when "R" pressed
|
||||||
|
lda Raster_Indicator
|
||||||
|
eor #1
|
||||||
|
sta Raster_Indicator
|
||||||
|
|
||||||
|
|
||||||
|
lda Raster_Indicator
|
||||||
|
bne +
|
||||||
|
lda #0
|
||||||
|
sta $d020
|
||||||
|
|
||||||
|
jmp +
|
||||||
|
Free_Raster_Indicator_Key_Pressed
|
||||||
|
lda #0
|
||||||
|
sta Raster_Indicator_Key_Pressed
|
||||||
|
|
||||||
|
+
|
||||||
|
|
||||||
|
lda #127 ;Disable keyboard detection
|
||||||
|
sta $dc00
|
||||||
|
|
||||||
|
lda Raster_Indicator
|
||||||
|
beq +
|
||||||
|
lda #0
|
||||||
|
sta $d020
|
||||||
|
+
|
||||||
|
|
||||||
|
pla
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
rti
|
87
Platform/C64/src/includes/searchText.asm
Normal file
87
Platform/C64/src/includes/searchText.asm
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
|
||||||
|
searchText
|
||||||
|
|
||||||
|
;Clear old text
|
||||||
|
ldy #15
|
||||||
|
lda #0
|
||||||
|
-
|
||||||
|
.for step=0, step<=15, step=step+1
|
||||||
|
sta TEXTPORT_SCREEN_OFFSET+SCREEN_COLOR_RAM + step*40 - 1,y
|
||||||
|
.next
|
||||||
|
dey
|
||||||
|
bne -
|
||||||
|
|
||||||
|
;Search for new one
|
||||||
|
clc
|
||||||
|
lda mapPosX
|
||||||
|
adc posX
|
||||||
|
sta locationX
|
||||||
|
|
||||||
|
lda mapPosX+1
|
||||||
|
adc #0
|
||||||
|
sta locationX+1
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda mapPosY
|
||||||
|
adc posY
|
||||||
|
sta locationY
|
||||||
|
|
||||||
|
lda mapPosY+1
|
||||||
|
adc #0
|
||||||
|
sta locationY+1
|
||||||
|
|
||||||
|
;Get how many text places are available on map in general so we can iterate through them
|
||||||
|
ldx TEXT_HEADER
|
||||||
|
|
||||||
|
lda #<TEXT_POINTERS
|
||||||
|
sta textPointerData_LO
|
||||||
|
lda #>TEXT_POINTERS
|
||||||
|
sta textPointerData_HI
|
||||||
|
|
||||||
|
-
|
||||||
|
ldy #0
|
||||||
|
lda (textPointerData_LO),y
|
||||||
|
cmp locationX
|
||||||
|
bne +
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (textPointerData_LO),y
|
||||||
|
cmp locationX+1
|
||||||
|
bne +
|
||||||
|
|
||||||
|
ldy #2
|
||||||
|
lda (textPointerData_LO),y
|
||||||
|
cmp locationY
|
||||||
|
bne +
|
||||||
|
|
||||||
|
ldy #3
|
||||||
|
lda (textPointerData_LO),y
|
||||||
|
cmp locationY+1
|
||||||
|
bne +
|
||||||
|
|
||||||
|
ldy #4
|
||||||
|
lda (textPointerData_LO),y
|
||||||
|
tax
|
||||||
|
|
||||||
|
ldy #5
|
||||||
|
lda (textPointerData_LO),y
|
||||||
|
tay
|
||||||
|
|
||||||
|
jsr drawText
|
||||||
|
rts
|
||||||
|
|
||||||
|
+
|
||||||
|
;Text not match location, search for the next one
|
||||||
|
clc
|
||||||
|
lda textPointerData_LO
|
||||||
|
adc #6
|
||||||
|
sta textPointerData_LO
|
||||||
|
|
||||||
|
lda textPointerData_HI
|
||||||
|
adc #0
|
||||||
|
sta textPointerData_HI
|
||||||
|
|
||||||
|
dex
|
||||||
|
bne -
|
||||||
|
|
||||||
|
rts
|
71
Platform/C64/src/includes/tables/drawTileTables.asm
Normal file
71
Platform/C64/src/includes/tables/drawTileTables.asm
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
|
||||||
|
tilesBitmapTable_LO
|
||||||
|
.for tileN=0, tileN<=63, tileN=tileN+1
|
||||||
|
.byte <TILES+tileN*32-1
|
||||||
|
.next
|
||||||
|
|
||||||
|
tilesBitmapTable_HI
|
||||||
|
.for tileN=0, tileN<=63, tileN=tileN+1
|
||||||
|
.byte >TILES+tileN*32-1
|
||||||
|
.next
|
||||||
|
|
||||||
|
mapBitmapTable_LO
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+2
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte <VIEWPORT_BITMAP_OFFSET+SCREEN+tileY*320+tileX*16-1-640
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
mapBitmapTable_HI
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+2
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte >VIEWPORT_BITMAP_OFFSET+SCREEN+tileY*320+tileX*16-1-640
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
mapBitmapTable2_LO
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+2
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte <VIEWPORT_BITMAP_OFFSET+SCREEN+tileY*320+tileX*16-1-320-16
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
mapBitmapTable2_HI
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+2
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte >VIEWPORT_BITMAP_OFFSET+SCREEN+tileY*320+tileX*16-1-320-16
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
screenVideoRamTable_LO
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+2
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte <VIEWPORT_SCREEN_OFFSET+SCREEN_VIDEO_RAM+tileY*40+tileX*2-80
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
screenVideoRamTable_HI
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+2
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte >VIEWPORT_SCREEN_OFFSET+SCREEN_VIDEO_RAM+tileY*40+tileX*2-80
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
colorRamTable_LO
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+2
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte <VIEWPORT_SCREEN_OFFSET+SCREEN_COLOR_RAM+tileY*40+tileX*2-80
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
colorRamTable_HI
|
||||||
|
.for tileY=0, tileY<=9*2, tileY=tileY+1+1
|
||||||
|
.for tileX=0, tileX<=8, tileX=tileX+1
|
||||||
|
.byte >VIEWPORT_SCREEN_OFFSET+SCREEN_COLOR_RAM+tileY*40+tileX*2-80
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
multiplyBy9
|
||||||
|
.for mul=1, mul<=9, mul=mul+1
|
||||||
|
.byte mul*9
|
||||||
|
.next
|
@ -0,0 +1,9 @@
|
|||||||
|
playerPosTableX
|
||||||
|
.for l=0, l<=8, l=l+1
|
||||||
|
.byte 38+l*16
|
||||||
|
.next
|
||||||
|
|
||||||
|
playerPosTableY
|
||||||
|
.for l=0, l<=8, l=l+1
|
||||||
|
.byte 74+l*16
|
||||||
|
.next
|
37
Platform/C64/src/includes/tables/textTables.asm
Normal file
37
Platform/C64/src/includes/tables/textTables.asm
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
fontsTable_LO
|
||||||
|
.for l=0, l<=60, l=l+1
|
||||||
|
.byte <FONTS+l*8-1
|
||||||
|
.next
|
||||||
|
|
||||||
|
fontsTable_HI
|
||||||
|
.for l=0, l<=60, l=l+1
|
||||||
|
.byte >FONTS+l*8-1
|
||||||
|
.next
|
||||||
|
|
||||||
|
textPortTable_LO
|
||||||
|
.for step=0, step<=13, step=step+1
|
||||||
|
.for l=0, l<=15, l=l+1
|
||||||
|
.byte <TEXTPORT_BITMAP_OFFSET+SCREEN-1+step*320+l*8
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
textPortTable_HI
|
||||||
|
.for step=0, step<=13, step=step+1
|
||||||
|
.for l=0, l<=15, l=l+1
|
||||||
|
.byte >TEXTPORT_BITMAP_OFFSET+SCREEN-1+step*320+l*8
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
textPortColorTable_LO
|
||||||
|
.for step=0, step<=13, step=step+1
|
||||||
|
.for l=0, l<=15, l=l+1
|
||||||
|
.byte <TEXTPORT_SCREEN_OFFSET+SCREEN_COLOR_RAM+step*40+l
|
||||||
|
.next
|
||||||
|
.next
|
||||||
|
|
||||||
|
textPortColorTable_HI
|
||||||
|
.for step=0, step<=13, step=step+1
|
||||||
|
.for l=0, l<=15, l=l+1
|
||||||
|
.byte >TEXTPORT_SCREEN_OFFSET+SCREEN_COLOR_RAM+step*40+l
|
||||||
|
.next
|
||||||
|
.next
|
Loading…
Reference in New Issue
Block a user