From 5b90bc571eff2c0dd1d5e578fadc8b77929dc51b Mon Sep 17 00:00:00 2001 From: Pecusx Date: Sun, 7 Aug 2022 13:50:38 +0200 Subject: [PATCH] Purchase AI uses bit tables instead bytes --- ai.asm | 21 ++++++- constants.asm | 170 +++++++++++++------------------------------------- scorch.xex | Bin 42764 -> 42686 bytes 3 files changed, 61 insertions(+), 130 deletions(-) diff --git a/ai.asm b/ai.asm index 6217917..39fe78d 100644 --- a/ai.asm +++ b/ai.asm @@ -858,7 +858,15 @@ PurchaseAIRoutines ; TankNr in X ; DOES NOT CHANGE X tay - lda PurchaseMeTable2,y + sta temp+1 + :3 lsr ; A=A/8 + sta temp + tya + and #%00000111 + tay + lda bittable,y + ldy temp + and PurchaseMeTable2,y beq TryToPurchaseOnePiece.SorryNoPurchase jmp TryToPurchaseOnePiece.PurchaseIt .endp @@ -868,9 +876,18 @@ PurchaseAIRoutines ; TankNr in X ; DOES NOT CHANGE X tay - lda PurchaseMeTable,y + sta temp+1 + :3 lsr ; A=A/8 + sta temp + tya + and #%00000111 + tay + lda bittable,y + ldy temp + and PurchaseMeTable,y beq SorryNoPurchase PurchaseIt + ldy temp+1 lda WeaponPriceL,y sta temp lda WeaponPriceH,y diff --git a/constants.asm b/constants.asm index c1b0856..cb5198c 100644 --- a/constants.asm +++ b/constants.asm @@ -503,137 +503,51 @@ WeaponUnits PurchaseMeTable ;weapons good to be purchased by the robot ;the comment is an index in the tables - dta 1 ;"Baby Missile " ; 0 - dta 1 ;"Missile " ; 1 - dta 1 ;"Baby Nuke " ; 2 - dta 1 ;"Nuke " ; 3 - dta 1 ;"LeapFrog " ; 4 - dta 1 ;"Funky Bomb " ; 5 - dta 1 ;"MIRV " ; 6 - dta 1 ;"Death's Head " ; 7 - dta 1 ;"Napalm " ; 8 - dta 1 ;"Hot Napalm " ; 9 - dta 0 ;"Tracer " ; 10 - dta 0 ;"Smoke Tracer " ; 11 - dta 1 ;"Baby Roller " ; 12 - dta 1 ;"Roller " ; 13 - dta 1 ;"Heavy Roller " ; 14 - dta 0 ;"Riot Charge " ; 15 - dta 0 ;"Riot Blast " ; 16 - dta 0 ;"Riot Bomb " ; 17 - dta 0 ;"Heavy Riot Bomb " ; 18 - dta 0 ;"Baby Digger " ; 19 - dta 0 ;"Digger " ; 20 - dta 0 ;"Heavy Digger " ; 21 - dta 0 ;"Baby Sandhog " ; 22 - dta 0 ;"Sandhog " ; 23 - dta 0 ;"Heavy Sandhog " ; 24 - dta 0 ;"Dirt Clod " ; 25 - dta 0 ;"Dirt Ball " ; 26 - dta 0 ;"Ton of Dirt " ; 27 - dta 0 ;"Liquid Dirt " ; 28 - dta 0 ;"Dirt Charge " ; 29 - dta 0 ;"Earth Disrupter " ; 30 - dta 0 ;"Plasma Blast " ; 31 - dta 0 ;"Laser " ; 32 - dta 0 ;"----------------" ; 33 - dta 0 ;"----------------" ; 34 - dta 0 ;"----------------" ; 35 - dta 0 ;"----------------" ; 36 - dta 0 ;"----------------" ; 37 - dta 0 ;"----------------" ; 38 - dta 0 ;"----------------" ; 39 - dta 0 ;"----------------" ; 40 - dta 0 ;"----------------" ; 41 - dta 0 ;"----------------" ; 42 - dta 0 ;"----------------" ; 43 - dta 0 ;"----------------" ; 44 - dta 0 ;"----------------" ; 45 - dta 0 ;"----------------" ; 46 - dta 0 ;"----------------" ; 47 - dta 0 ;"White Flag " ; 48 - dta 1 ;"Battery " ; 49 - dta 0 ;"Bal Guidance " ; 50 - dta 0 ;"Horz Guidance " ; 51 - dta 0 ;"Vert Guidance " ; 52 - dta 0 ;"Lazy Boy " ; 53 - dta 1 ;"Parachute " ; 54 - dta 1 ;"Strong Parachute" ; 55 - dta 1 ;"Mag Deflector " ; 56 - dta 1 ;"Shield " ; 57 - dta 1 ;"Heavy Shield " ; 58 - dta 1 ;"Force Shield " ; 59 - dta 0 ;"Super Mag " ; 60 - dta 1 ;"Auto Defense " ; 61 - dta 0 ;"Fuel Tank " ; 62 - dta 0 ;"Nuclear Winter " ; 63 + ; "Baby Missile ","Missile ","Baby Nuke ","Nuke " + ; "LeapFrog ","Funky Bomb ","MIRV ","Death's Head " + .by %01111111 + ; "Napalm ","Hot Napalm ","Tracer ","Smoke Tracer " + ; "Baby Roller ","Roller ","Heavy Roller ","Riot Charge " + .by %11001110 + ; "Riot Blast ","Riot Bomb ","Heavy Riot Bomb ","Baby Digger " + ; "Digger ","Heavy Digger ","Baby Sandhog ","Sandhog " + .by %00000000 + ; "Heavy Sandhog ","Dirt Clod ","Dirt Ball ","Ton of Dirt " + ; "Liquid Dirt ","Dirt Charge ","Earth Disrupter ","Plasma Blast " + .by %00000000 + ; "Laser " + .by %00000000 + .by 0 ; offset to defensives + ; "White Flag ","Battery ","Bal Guidance ","Horz Guidance " + ; "Vert Guidance ","Lazy Boy ","Parachute ","Strong Parachute" + .by %01000011 + ; "Mag Deflector ","Shield ","Heavy Shield ","Force Shield " + ; "Super Mag ","Auto Defense ","Fuel Tank ","Nuclear Winter " + .by %11110100 PurchaseMeTable2 ;weapons good to be purchased by the robot (Cyborg) ;the comment is an index in the tables - dta 1 ;"Baby Missile " ; 0 - dta 0 ;"Missile " ; 1 - dta 1 ;"Baby Nuke " ; 2 - dta 1 ;"Nuke " ; 3 - dta 0 ;"LeapFrog " ; 4 - dta 0 ;"Funky Bomb " ; 5 - dta 0 ;"MIRV " ; 6 - dta 1 ;"Death's Head " ; 7 - dta 0 ;"Napalm " ; 8 - dta 1 ;"Hot Napalm " ; 9 - dta 0 ;"Tracer " ; 10 - dta 0 ;"Smoke Tracer " ; 11 - dta 0 ;"Baby Roller " ; 12 - dta 0 ;"Roller " ; 13 - dta 0 ;"Heavy Roller " ; 14 - dta 0 ;"Riot Charge " ; 15 - dta 0 ;"Riot Blast " ; 16 - dta 0 ;"Riot Bomb " ; 17 - dta 0 ;"Heavy Riot Bomb " ; 18 - dta 0 ;"Baby Digger " ; 19 - dta 0 ;"Digger " ; 20 - dta 0 ;"Heavy Digger " ; 21 - dta 0 ;"Baby Sandhog " ; 22 - dta 0 ;"Sandhog " ; 23 - dta 0 ;"Heavy Sandhog " ; 24 - dta 0 ;"Dirt Clod " ; 25 - dta 0 ;"Dirt Ball " ; 26 - dta 0 ;"Ton of Dirt " ; 27 - dta 0 ;"Liquid Dirt " ; 28 - dta 0 ;"Dirt Charge " ; 29 - dta 0 ;"Earth Disrupter " ; 30 - dta 0 ;"Plasma Blast " ; 31 - dta 0 ;"Laser " ; 32 - dta 0 ;"----------------" ; 33 - dta 0 ;"----------------" ; 34 - dta 0 ;"----------------" ; 35 - dta 0 ;"----------------" ; 36 - dta 0 ;"----------------" ; 37 - dta 0 ;"----------------" ; 38 - dta 0 ;"----------------" ; 39 - dta 0 ;"----------------" ; 40 - dta 0 ;"----------------" ; 41 - dta 0 ;"----------------" ; 42 - dta 0 ;"----------------" ; 43 - dta 0 ;"----------------" ; 44 - dta 0 ;"----------------" ; 45 - dta 0 ;"----------------" ; 46 - dta 0 ;"----------------" ; 47 - dta 0 ;"White Flag " ; 48 - dta 1 ;"Battery " ; 49 - dta 0 ;"Bal Guidance " ; 50 - dta 0 ;"Horz Guidance " ; 51 - dta 0 ;"Vert Guidance " ; 52 - dta 0 ;"Lazy Boy " ; 53 - dta 0 ;"Parachute " ; 54 - dta 1 ;"Strong Parachute" ; 55 - dta 1 ;"Mag Deflector " ; 56 - dta 0 ;"Shield " ; 57 - dta 1 ;"Heavy Shield " ; 58 - dta 1 ;"Force Shield " ; 59 - dta 0 ;"Super Mag " ; 60 - dta 1 ;"Auto Defense " ; 61 - dta 0 ;"Fuel Tank " ; 62 - dta 0 ;"Nuclear Winter " ; 63 + ; "Baby Missile ","Missile ","Baby Nuke ","Nuke " + ; "LeapFrog ","Funky Bomb ","MIRV ","Death's Head " + .by %00110001 + ; "Napalm ","Hot Napalm ","Tracer ","Smoke Tracer " + ; "Baby Roller ","Roller ","Heavy Roller ","Riot Charge " + .by %01000000 + ; "Riot Blast ","Riot Bomb ","Heavy Riot Bomb ","Baby Digger " + ; "Digger ","Heavy Digger ","Baby Sandhog ","Sandhog " + .by %00000000 + ; "Heavy Sandhog ","Dirt Clod ","Dirt Ball ","Ton of Dirt " + ; "Liquid Dirt ","Dirt Charge ","Earth Disrupter ","Plasma Blast " + .by %00000000 + ; "Laser " + .by %00000000 + .by 0 ; offset to defensives + ; "White Flag ","Battery ","Bal Guidance ","Horz Guidance " + ; "Vert Guidance ","Lazy Boy ","Parachute ","Strong Parachute" + .by %01000001 + ; "Mag Deflector ","Shield ","Heavy Shield ","Force Shield " + ; "Super Mag ","Auto Defense ","Fuel Tank ","Nuclear Winter " + .by %10110100 ;------------------------------------------------- ; Screen codes of icons (chars) representing a given weapon diff --git a/scorch.xex b/scorch.xex index ba21ea329294aff1ee025e8a3479da0289f303ba..a2ac02dfaa144e36e1e0de00b076466088c244c4 100644 GIT binary patch delta 15401 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