mirror of
https://github.com/dschmenk/PLASMA.git
synced 2024-10-18 07:24:16 +00:00
Check for existing string in pool before copying CS string from aux mem
This commit is contained in:
parent
37c9f76faf
commit
ee8fd77c26
@ -119,7 +119,6 @@ word ascii_entity = @ascii_thief, @ascii_ogre, @ascii_zombie, @ascii_rogue
|
|||||||
//
|
//
|
||||||
// Monster types
|
// Monster types
|
||||||
//
|
//
|
||||||
|
|
||||||
byte thief = "Thief", 5
|
byte thief = "Thief", 5
|
||||||
byte ogre = "Ogre", 20
|
byte ogre = "Ogre", 20
|
||||||
byte zombie = "Zombie", 40
|
byte zombie = "Zombie", 40
|
||||||
@ -127,17 +126,6 @@ byte rogue = "Rogue", 80
|
|||||||
export word entity = @thief, @ogre, @zombie, @rogue
|
export word entity = @thief, @ogre, @zombie, @rogue
|
||||||
export word entities = 0
|
export word entities = 0
|
||||||
|
|
||||||
//
|
|
||||||
// Combat status strings
|
|
||||||
//
|
|
||||||
|
|
||||||
byte skillstr = "Skill :"
|
|
||||||
byte healthstr = "Health :"
|
|
||||||
byte energystr = "Energy :"
|
|
||||||
byte powerstr = "Power :"
|
|
||||||
byte lifestr = "Life :"
|
|
||||||
byte fightstr = "F)ight or R)un?"
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Combat Return 1 if running away, 0 if end of fight
|
// Combat Return 1 if running away, 0 if end of fight
|
||||||
//
|
//
|
||||||
@ -157,24 +145,24 @@ export def fight(player, enemy)
|
|||||||
gotoxy(0, 0)
|
gotoxy(0, 0)
|
||||||
puts(player+name)
|
puts(player+name)
|
||||||
gotoxy(1, 2)
|
gotoxy(1, 2)
|
||||||
puts(@skillstr); puti(player->skill)
|
puts("Skill :"); puti(player->skill)
|
||||||
gotoxy(1, 3)
|
gotoxy(1, 3)
|
||||||
puts(@healthstr); puti(player->health)
|
puts("Health :"); puti(player->health)
|
||||||
gotoxy(1, 4)
|
gotoxy(1, 4)
|
||||||
puts(@energystr); puti(player->energy)
|
puts("Energy :"); puti(player->energy)
|
||||||
gotoxy(20, 0)
|
gotoxy(20, 0)
|
||||||
puts(entity[enemy->kind])
|
puts(entity[enemy->kind])
|
||||||
gotoxy(21, 2)
|
gotoxy(21, 2)
|
||||||
puts(@powerstr); puti(enemy->power)
|
puts("Power :"); puti(enemy->power)
|
||||||
gotoxy(21, 3)
|
gotoxy(21, 3)
|
||||||
puts(@lifestr); puti(enemy->life)
|
puts("Life :"); puti(enemy->life)
|
||||||
for e_atck = 0 to 9
|
for e_atck = 0 to 9
|
||||||
gotoxy(0, 10 + e_atck)
|
gotoxy(0, 10 + e_atck)
|
||||||
puts(@ascii_warrior + e_atck * 11)
|
puts(@ascii_warrior + e_atck * 11)
|
||||||
gotoxy(20, 10 + e_atck)
|
gotoxy(20, 10 + e_atck)
|
||||||
puts(ascii_entity[enemy->kind] + e_atck * 11)
|
puts(ascii_entity[enemy->kind] + e_atck * 11)
|
||||||
next
|
next
|
||||||
gotoxy(12, 8); puts(@fightstr)
|
gotoxy(12, 8); puts("F)ight or R)un?")
|
||||||
if toupper(getkb()) == 'R'
|
if toupper(getkb()) == 'R'
|
||||||
return 1
|
return 1
|
||||||
else
|
else
|
||||||
@ -204,10 +192,10 @@ export def fight(player, enemy)
|
|||||||
entities = enemy=>next_other
|
entities = enemy=>next_other
|
||||||
fin
|
fin
|
||||||
if enemy=>next_other
|
if enemy=>next_other
|
||||||
enemy=>next_other=>prev_other = enemy=>prev_other
|
enemy=>next_other=>prev_other = enemy=>prev_other
|
||||||
fin
|
fin
|
||||||
if enemy=>prev_other
|
if enemy=>prev_other
|
||||||
enemy=>prev_other=>next_other = enemy=>next_other
|
enemy=>prev_other=>next_other = enemy=>next_other
|
||||||
fin
|
fin
|
||||||
fin
|
fin
|
||||||
if player->health > e_atck
|
if player->health > e_atck
|
||||||
@ -224,4 +212,4 @@ export def fight(player, enemy)
|
|||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
done
|
done
|
||||||
|
@ -90,7 +90,7 @@ word = $0450,$04D0,$0550,$05D0,$0650,$06D0,$0750,$07D0
|
|||||||
// Editor variables
|
// Editor variables
|
||||||
//
|
//
|
||||||
byte nullstr = ""
|
byte nullstr = ""
|
||||||
byte version = "PLASMA ][ SANDBOX VERSION 00.95"
|
byte version = "PLASMA ][ SANDBOX VERSION 00.96"
|
||||||
byte errorstr = "ERROR: $"
|
byte errorstr = "ERROR: $"
|
||||||
byte okstr = "OK"
|
byte okstr = "OK"
|
||||||
byte outofmem = "OUT OF MEMORY!"
|
byte outofmem = "OUT OF MEMORY!"
|
||||||
|
@ -786,11 +786,11 @@ CSX DEX
|
|||||||
TAY
|
TAY
|
||||||
ADC IPH
|
ADC IPH
|
||||||
STA IPH
|
STA IPH
|
||||||
LDA PPH ; SCAN POOL FOR STRING ALREADY THERE
|
LDA PPL ; SCAN POOL FOR STRING ALREADY THERE
|
||||||
STA TMPH
|
|
||||||
LDA PPL
|
|
||||||
STA TMPL
|
STA TMPL
|
||||||
_CMPPSX LDA TMPH ; CHECK FOR END OF POOL
|
LDA PPH
|
||||||
|
STA TMPH
|
||||||
|
_CMPPSX ;LDA TMPH ; CHECK FOR END OF POOL
|
||||||
CMP IFPH
|
CMP IFPH
|
||||||
BCC _CMPSX ; CHECK FOR MATCHING STRING
|
BCC _CMPSX ; CHECK FOR MATCHING STRING
|
||||||
BNE _CPYSX ; BEYOND END OF POOL, COPY STRING OVER
|
BNE _CPYSX ; BEYOND END OF POOL, COPY STRING OVER
|
||||||
|
@ -46,7 +46,7 @@ DSTX = XPAGE+DSTH
|
|||||||
!WORD $0000
|
!WORD $0000
|
||||||
!WORD SEGSTART
|
!WORD SEGSTART
|
||||||
!WORD SEGEND-SEGSTART
|
!WORD SEGEND-SEGSTART
|
||||||
|
|
||||||
+SOS $40, SEGREQ ; ALLOCATE SEG 1 AND MAP IT
|
+SOS $40, SEGREQ ; ALLOCATE SEG 1 AND MAP IT
|
||||||
BNE PRHEX
|
BNE PRHEX
|
||||||
LDA #$01
|
LDA #$01
|
||||||
@ -89,7 +89,7 @@ PRHEX PHA
|
|||||||
BCC +
|
BCC +
|
||||||
ADC #6
|
ADC #6
|
||||||
+ STA $880
|
+ STA $880
|
||||||
FAIL RTS
|
FAIL RTS
|
||||||
SEGREQ !BYTE 4
|
SEGREQ !BYTE 4
|
||||||
!WORD $2001
|
!WORD $2001
|
||||||
!WORD $9F01
|
!WORD $9F01
|
||||||
@ -545,7 +545,41 @@ CS DEX
|
|||||||
TAY
|
TAY
|
||||||
ADC IPH
|
ADC IPH
|
||||||
STA IPH
|
STA IPH
|
||||||
LDA (IP),Y
|
LDA PPL ; SCAN POOL FOR STRING ALREADY THERE
|
||||||
|
STA TMPL
|
||||||
|
LDA PPH
|
||||||
|
STA TMPH
|
||||||
|
_CMPPS ;LDA TMPH ; CHECK FOR END OF POOL
|
||||||
|
CMP IFPH
|
||||||
|
BCC _CMPS ; CHECK FOR MATCHING STRING
|
||||||
|
BNE _CPYS ; BEYOND END OF POOL, COPY STRING OVER
|
||||||
|
LDA TMPL
|
||||||
|
CMP IFPL
|
||||||
|
BCS _CPYS ; AT OR BEYOND END OF POOL, COPY STRING OVER
|
||||||
|
_CMPS LDA (TMP),Y ; COMPARE STRINGS FROM AUX MEM TO STRINGS IN MAIN MEM
|
||||||
|
CMP (IP),Y ; COMPARE STRING LENGTHS
|
||||||
|
BNE _CNXTS1
|
||||||
|
TAY
|
||||||
|
_CMPCS LDA (TMP),Y ; COMPARE STRING CHARS FROM END
|
||||||
|
CMP (IP),Y
|
||||||
|
BNE _CNXTS
|
||||||
|
DEY
|
||||||
|
BNE _CMPCS
|
||||||
|
LDA TMPL ; MATCH - SAVE EXISTING ADDR ON ESTK AND MOVE ON
|
||||||
|
STA ESTKL,X
|
||||||
|
LDA TMPH
|
||||||
|
STA ESTKH,X
|
||||||
|
BNE _CEXS
|
||||||
|
_CNXTS LDY #$00
|
||||||
|
LDA (TMP),Y
|
||||||
|
_CNXTS1 SEC
|
||||||
|
ADC TMPL
|
||||||
|
STA TMPL
|
||||||
|
LDA #$00
|
||||||
|
ADC TMPH
|
||||||
|
STA TMPH
|
||||||
|
BNE _CMPPS
|
||||||
|
_CPYS LDA (IP),Y ; COPY STRING FROM AUX TO MAIN MEM POOL
|
||||||
TAY ; MAKE ROOM IN POOL AND SAVE ADDR ON ESTK
|
TAY ; MAKE ROOM IN POOL AND SAVE ADDR ON ESTK
|
||||||
EOR #$FF
|
EOR #$FF
|
||||||
CLC
|
CLC
|
||||||
@ -556,13 +590,13 @@ CS DEX
|
|||||||
ADC PPH
|
ADC PPH
|
||||||
STA PPH
|
STA PPH
|
||||||
STA ESTKH,X ; COPY STRING FROM AUX MEM BYTECODE TO MAIN MEM POOL
|
STA ESTKH,X ; COPY STRING FROM AUX MEM BYTECODE TO MAIN MEM POOL
|
||||||
- LDA (IP),Y ; ALTRD IS ON, NO NEED TO CHANGE IT HERE
|
_CPYS1 LDA (IP),Y ; ALTRD IS ON, NO NEED TO CHANGE IT HERE
|
||||||
STA (PP),Y ; ALTWR IS OFF, NO NEED TO CHANGE IT HERE
|
STA (PP),Y ; ALTWR IS OFF, NO NEED TO CHANGE IT HERE
|
||||||
DEY
|
DEY
|
||||||
CPY #$FF
|
CPY #$FF
|
||||||
BNE -
|
BNE _CPYS1
|
||||||
INY
|
INY
|
||||||
LDA (IP),Y ; SKIP TO NEXT OP ADDR AFTER STRING
|
_CEXS LDA (IP),Y ; SKIP TO NEXT OP ADDR AFTER STRING
|
||||||
TAY
|
TAY
|
||||||
JMP NEXTOP
|
JMP NEXTOP
|
||||||
;*
|
;*
|
||||||
|
Loading…
Reference in New Issue
Block a user