New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

SanguineBrah or indeed anyone else, please run "FIN" from the attached .SSD and let me know what it prints.
The first number is where the ready signal is connected, I think that this should be 128, but may be 64 on an issue 3/4 without the track mods.
The second number is how long it took to settle and on my original issue 7, it is 2 or 3.
First number 0 is speech not found and second number 0 is timed out/found a master/compact.
I would like to get a good selection of machines, but am pretty sure that it will work as I tried it out quite a bit before, but may not have remembered my own code correctly!
Attachments
test.ssd
CH."FIN"
(16.75 KiB) Downloaded 79 times
SanguineBrah
Posts: 36
Joined: Tue Apr 27, 2021 2:24 pm
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by SanguineBrah »

The test returns 64, 3, 169C

To confirm, this is on an issue 3 board without the track mod and without a TM6100 fitted.
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

SanguineBrah wrote: Wed Apr 28, 2021 9:21 pm The test returns 64, 3, 169C

To confirm, this is on an issue 3 board without the track mod and without a TM6100 fitted.
Thanks.
Silly question, how sure are you that it doesn't have a 5220
Sorry, I see, it has a 5220, but no 6100 ;)
Those results are what I expect, with the 3 probably being a 2 or 3 depending on timing - it doesn't really matter.

If anyone gets a xx, 2, please could you run it a few more times until you get a 1 or 3 and let me know which.

Because I couldn't work out which way around the two signals were connected, I wrote the code such that detecting the 5220 is the same as working out where the ready signal is wired. Later I found out that the CC Speech ROM does the same thing :)
I guess that the OS does the same test, but only checks b7 (128).
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

Here is a version that uses my code to detect the speech chip, so it should work on issue 3 and 4 boards without the track mods.
I thought I had tested the OS detection, but I have an issue 7 board in a rough case with large air slot, and must have used that.
I have a machine that the old code didn't detect the speech chip that I thought had a hardware issue, but was probably the OS detection code.

I don't have many machines out at the moment and all have speech chips, so there could be some incompatibilities that I haven't found.

The code should correctly detect or not the speech chip in B/B+/Master/Compact.
It should also detect:
WE shadow RAM (used for three samples if no speech chip), but does this by looking for a ROM with the title "Shadow RAM OS".
The RAM on a WE 12 ROM board if both BASIC and DFS (MMFS etc) are on the ROM board.
Solidisk sideways RAM (old and new) either 1 or more banks.
Any of the other sideways RAM boards including DIY for 1 or more banks.

It will use the highest number banks that it finds, so if you are using DFS/MMFS etc from sideways RAM, load them in the lower banks.

If you have sideways RAM that is not detected, please let me know the details and I will add it to my detection code.
Attachments
TrickyArcadeAstroBlaster.ssd
(76 KiB) Downloaded 82 times
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

This is probably going to be the new official version if no (new!) bugs are found.
This version uses sideways RAM banks from lowest to highest which makes more sense to me.
SanguineBrah, I think this is the version for you ;)
Attachments
TrickyArcadeAstroBlaster.ssd
(76 KiB) Downloaded 85 times
SanguineBrah
Posts: 36
Joined: Tue Apr 27, 2021 2:24 pm
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by SanguineBrah »

Thanks Tricky. Awkwardly, my Beeb's power supply has now decided that it doesn't like the load from a full bank of roms in addition to the TMS5220, so I am going to have to get that sorted before I can test out the new version. I will get back to you as soon as I manage to sort that out.
User avatar
leenew
Posts: 4901
Joined: Wed Jul 04, 2012 4:27 pm
Location: Doncaster, Yorkshire
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by leenew »

tricky wrote: Fri Apr 30, 2021 2:26 pm This is probably going to be the new official version if no (new!) bugs are found.
This version uses sideways RAM banks from lowest to highest which makes more sense to me.
SanguineBrah, I think this is the version for you ;)
Hi Richard,
Are those instructions correct?
I can't remember UP and DOWN being used...

Lee
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

DOH!
No there is no vertical movement, by your shop anyway.
I didn't check the simplest thing, but I'm sure I copied it from Astro Blaster instructions! I did think that the screen looked a bit full and even checked which keys / and ; would map to on a PC!
I'll fix it during ABUG tomorrow.
The game should be fine though as I did test it on a couple of emulators and a beeb.
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

That took longer than I thought it would as I ended up rewriting the loader generator program.
TrickyArcadeAstroBlaster.ssd
(75.75 KiB) Downloaded 96 times
I still haven't worked out exactly what is causing the lockup, nor how to fix it!
If your ship gives a wiggle when it first appears, just press ESCAPE and restart!
SanguineBrah
Posts: 36
Joined: Tue Apr 27, 2021 2:24 pm
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by SanguineBrah »

Well, my beeb is back from the dead, but I don't know if its in a state to give reliable outcomes for testing. It often doesn't boot first time with the 5220 in place, although after a CTRL-Break it boots and the CC speech synthesis works just fine. I have no idea if this is normal for issue 3s without the track mod. In this state, I tried the latest ssd in this thread and the game now starts correctly, although during times when it's trying to play speech it slows to a crawl and there's no audio, then it goes back to functioning perfectly normally afterwards (sound effects, full speed).

Edit: after another few attempts, it no longer slows down when the game starts (no idea what happened there), but the audio still doesn't start right away and there is still no speech.

Edit2: I have tested the Star Wars speech demo, and it works perfectly! I'm not sure that the speech is actually the problem here. Perhaps the issue is related to the use of sideways ram? I noticed that when I CTRL-BREAK after running the latest version, then *ROMS none of the SWRAM banks have any Astro Blaster entries listed.
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

Thanks to a off by one or two cycles in vsync flagging in the new b-em, I think that I have managed to fix the bug that was causing the "wiggly ship" lockup.
Attached are three disc images, _1, _2 and _3.
These have three slight differences to timing, with _2 looking like the best all round candidate.
Unfortunately, I don't have a working master available at the moment and so I don't know which would work best on that, but I am suspecting _1 or _3.
_1 and _2 work correctly on a model B, but _3 has the wrong colour at the top on the right of the fuel gauge, once laser temperature has become critical!
This is a minor issue compared to moving the timing too far either way as that causes the control panel to be shown in the play area for the odd frame, which I don't consider acceptable!

So, I would like to know if _2 works well on a master and if not, do either of the others?

_1 should be OK on B, B-Em may flash the control panel
_2 should be OK on B or B-Em (speech version)
_3 should be OK on B and B-Em, but fuel colour wrong

PS Just as I was about to post this, I found bugs in the WE12 ROM/RAM board and Watford Shadow RAM board detection code!
I think that I have fixed them, but don't have machines with them in available for testing at the moment either, so if anyone has them, I would be grateful if they could confirm that they work.

To summarise what is supported:
Speech chip in a B or B+, with or without the Acorn track mods and PHROM.
Solidisc sideways RAM.
Cheap and simple SWRAM mod, or any other system based on &FE30.
The single bank of SWRAM in slot 14 on a WE 12 ROM/RAM board as long as BASIC 2 is on the board,
Watford Electronics Shadow RAM board (20KB from &3000..&7FFF iirc) as long as the "Shadow RAM OS" ROM is installed (This needs better detection code than looking for the ROM!)

If none of these are present, then there is no in-game speech.
The speech chip only needs one set of SWRAM.
If there is no speech chip, two banks of SWRAM will be used for four samples, Shadow RAM will be used for three or a single bank will be used for two.
If the samples are loaded into SWRAM, they will be available as ROMs until cleared and will play their samples with "*ASTROs1" and "*ASTROs2".
One day, I may make the ASTROsp ROM play the words, but for now, it doesn't!

There is sampled speech on the Instructions page when running the Trickysoft version, but this can still be heard by:
*/PILOT28
*/PLAY58
CALL &2800 : CALL &5800
CALL &2800 : CALL &5800
The PILOT28 and PLAY58 are self extracting compressed files that leave the sample player and data at the addresses above.
Attachments
TrickyArcadeAstroBlaster_1.ssd
(75.75 KiB) Downloaded 72 times
TrickyArcadeAstroBlaster_3.ssd
(75.75 KiB) Downloaded 72 times
TrickyArcadeAstroBlaster_2.ssd
(75.75 KiB) Downloaded 73 times
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

I've tidied up the ROM code, so that ASTROBL should work as a ROM with ASTROS1, ASTROS2 the sample ROMs or on a B/B+ ASTROSP the speech data ROM and added my new user defined keys option :)
I have only done minimal testing in beebem!
Attachments
AstroBlaster.zip
(45.42 KiB) Downloaded 13 times
User avatar
tricky
Posts: 7712
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: New version of Astro Blaster (was: I'm currently working on a version of AstroBlaster)

Post by tricky »

Someone was asking for the code that searches for SWRAM, so here it is (probably again):

Code: Select all

; All three stages need to be separate to account for bank aliasing
tstaddr = &8008
values = &70
unique = &80
OsSlot = &F4
RomSel = &FE30
RamSel = &FE32
UsrDat = &FE60
UsrDDR = &FE62
RomRam = &FF30
; Find 16 values distinct from the 16 rom values and each other and save the original rom values
.find_swr
    SEI
    LDY    #15        \\ unique values (-1) to find
    STY    UsrDDR     \\ set user via DDRB low bits as output - required for Solidisk SW RAM
    TYA               \\ A can start anywhere less than 256-64 as it just needs to allow for
.next_val:            \\ enough numbers not to clash with rom, tst and uninitialised tst values
    LDX    #15        \\ sideways bank
    ADC    #1         \\ will inc mostly by 2, but doesn't matter
.next_slot:
    STX    RomSel
    CMP    tstaddr
    BEQ    next_val
    CMP    unique,X   \\ doesn't matter that we haven't checked these yet, it just excludes unnecessary values
    BEQ    next_val
    DEX
    BPL    next_slot
    STA    unique,Y
    LDX    tstaddr
    STX    values,Y
    DEY
    BPL    next_val
    LDX    #0         \\ Try to swap each rom value with a unique test value (count up for solidisk)
.swap:
    STX    UsrDat     \\ set Solidisk SWRAM index
    STX    RamSel     \\ set RamSel incase it is used
    STX    RomSel     \\ set RomSel homebrew and some other boards
    STA    RomRam,X   \\ set Watford ROMRAM/2MEG board - write bank
    LDA    unique,X
    STA    tstaddr 
    INX               \\ count up to allow for Solidisk only have 3 select bits
    CPX    #16
    BNE    swap
    LDY    #16        \\ count matching values and restore old values - reverse order to swapping is safe
    LDX    #15
.tst_restore:
    STX    RomSel
    LDA    tstaddr
    CMP    unique,X   \\ if it has changed, but is not this value, it will be picked up in a later bank
    BNE    not_swr
    STX    UsrDat     \\ set Solidisk SWRAM index
    STX    RamSel     \\ set RamSel incase it is used
    STX    RomSel     \\ set RomSel homebrew and some other boards
    STA    RomRam,X   \\ set Watford ROMRAM/2MEG board - write bank
    LDA    values,X
    STA    tstaddr
    DEY
    STX    values,Y
.not_swr:
    DEX
    BPL    tst_restore
    STY    values
    LDA    OsSlot
    STA    RomSel     \\ restore original ROM
    CLI
RTS
Remove the accesses to UsrDat and UsrDDR if you don't need early Solidisk support and don't want you SDCard solutions confused!

And code to copy to a SWRAM bank, again ditch the &FE6x references.

Code: Select all

.copy_swr
	LDA &FE60 : PHA : LDA &FE62 : PHA \ REG DDR
	LDX &70 \ SWRAM bank
	LDY #0
.page
	LDA #15
	SEI
	STA &FE62
	STX &FE60   \ set Solidisk SWRAM index
	STX &FE32   \ set RamSel incase it is used
	STA &FF30,X \ set Watford ROMRAM/2MEG board - write anything
	STX &FE30   \ set RomSel as it is sometimes used to select writ
.loop
	LDA (&72),Y
	STA (&74),Y
	INY
	BNE loop
	LDA &F4
	STA &FE30  \ restore OS selected SWR
	CLI
	INC &73
	INC &75
	DEC &71
	BNE page
	PLA : STA &FE62 : PLA : STA &FE60 \ DDR REG
RTS
Attached is all the routines I use as part of my game's loaders/
Attachments
TrickysoftLoader.zip
All assembler routines for my loaders
(2.65 KiB) Downloaded 5 times
Post Reply

Return to “trickysoft (new bbc micro games)”