mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-02-20 17:29:11 +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
|
||||
//
|
||||
|
||||
byte thief = "Thief", 5
|
||||
byte ogre = "Ogre", 20
|
||||
byte zombie = "Zombie", 40
|
||||
@ -127,17 +126,6 @@ byte rogue = "Rogue", 80
|
||||
export word entity = @thief, @ogre, @zombie, @rogue
|
||||
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
|
||||
//
|
||||
@ -157,24 +145,24 @@ export def fight(player, enemy)
|
||||
gotoxy(0, 0)
|
||||
puts(player+name)
|
||||
gotoxy(1, 2)
|
||||
puts(@skillstr); puti(player->skill)
|
||||
puts("Skill :"); puti(player->skill)
|
||||
gotoxy(1, 3)
|
||||
puts(@healthstr); puti(player->health)
|
||||
puts("Health :"); puti(player->health)
|
||||
gotoxy(1, 4)
|
||||
puts(@energystr); puti(player->energy)
|
||||
puts("Energy :"); puti(player->energy)
|
||||
gotoxy(20, 0)
|
||||
puts(entity[enemy->kind])
|
||||
gotoxy(21, 2)
|
||||
puts(@powerstr); puti(enemy->power)
|
||||
puts("Power :"); puti(enemy->power)
|
||||
gotoxy(21, 3)
|
||||
puts(@lifestr); puti(enemy->life)
|
||||
puts("Life :"); puti(enemy->life)
|
||||
for e_atck = 0 to 9
|
||||
gotoxy(0, 10 + e_atck)
|
||||
puts(@ascii_warrior + e_atck * 11)
|
||||
gotoxy(20, 10 + e_atck)
|
||||
puts(ascii_entity[enemy->kind] + e_atck * 11)
|
||||
next
|
||||
gotoxy(12, 8); puts(@fightstr)
|
||||
gotoxy(12, 8); puts("F)ight or R)un?")
|
||||
if toupper(getkb()) == 'R'
|
||||
return 1
|
||||
else
|
||||
@ -204,10 +192,10 @@ export def fight(player, enemy)
|
||||
entities = enemy=>next_other
|
||||
fin
|
||||
if enemy=>next_other
|
||||
enemy=>next_other=>prev_other = enemy=>prev_other
|
||||
enemy=>next_other=>prev_other = enemy=>prev_other
|
||||
fin
|
||||
if enemy=>prev_other
|
||||
enemy=>prev_other=>next_other = enemy=>next_other
|
||||
enemy=>prev_other=>next_other = enemy=>next_other
|
||||
fin
|
||||
fin
|
||||
if player->health > e_atck
|
||||
@ -224,4 +212,4 @@ export def fight(player, enemy)
|
||||
return 0
|
||||
end
|
||||
|
||||
done
|
||||
done
|
||||
|
@ -90,7 +90,7 @@ word = $0450,$04D0,$0550,$05D0,$0650,$06D0,$0750,$07D0
|
||||
// Editor variables
|
||||
//
|
||||
byte nullstr = ""
|
||||
byte version = "PLASMA ][ SANDBOX VERSION 00.95"
|
||||
byte version = "PLASMA ][ SANDBOX VERSION 00.96"
|
||||
byte errorstr = "ERROR: $"
|
||||
byte okstr = "OK"
|
||||
byte outofmem = "OUT OF MEMORY!"
|
||||
|
@ -786,11 +786,11 @@ CSX DEX
|
||||
TAY
|
||||
ADC IPH
|
||||
STA IPH
|
||||
LDA PPH ; SCAN POOL FOR STRING ALREADY THERE
|
||||
STA TMPH
|
||||
LDA PPL
|
||||
LDA PPL ; SCAN POOL FOR STRING ALREADY THERE
|
||||
STA TMPL
|
||||
_CMPPSX LDA TMPH ; CHECK FOR END OF POOL
|
||||
LDA PPH
|
||||
STA TMPH
|
||||
_CMPPSX ;LDA TMPH ; CHECK FOR END OF POOL
|
||||
CMP IFPH
|
||||
BCC _CMPSX ; CHECK FOR MATCHING STRING
|
||||
BNE _CPYSX ; BEYOND END OF POOL, COPY STRING OVER
|
||||
|
@ -46,7 +46,7 @@ DSTX = XPAGE+DSTH
|
||||
!WORD $0000
|
||||
!WORD SEGSTART
|
||||
!WORD SEGEND-SEGSTART
|
||||
|
||||
|
||||
+SOS $40, SEGREQ ; ALLOCATE SEG 1 AND MAP IT
|
||||
BNE PRHEX
|
||||
LDA #$01
|
||||
@ -89,7 +89,7 @@ PRHEX PHA
|
||||
BCC +
|
||||
ADC #6
|
||||
+ STA $880
|
||||
FAIL RTS
|
||||
FAIL RTS
|
||||
SEGREQ !BYTE 4
|
||||
!WORD $2001
|
||||
!WORD $9F01
|
||||
@ -545,7 +545,41 @@ CS DEX
|
||||
TAY
|
||||
ADC 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
|
||||
EOR #$FF
|
||||
CLC
|
||||
@ -556,13 +590,13 @@ CS DEX
|
||||
ADC PPH
|
||||
STA PPH
|
||||
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
|
||||
DEY
|
||||
CPY #$FF
|
||||
BNE -
|
||||
BNE _CPYS1
|
||||
INY
|
||||
LDA (IP),Y ; SKIP TO NEXT OP ADDR AFTER STRING
|
||||
_CEXS LDA (IP),Y ; SKIP TO NEXT OP ADDR AFTER STRING
|
||||
TAY
|
||||
JMP NEXTOP
|
||||
;*
|
||||
|
Loading…
x
Reference in New Issue
Block a user