Technodream on emulation

subjects relating to classic games for the archimedes and risc pc
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

sirbod wrote: Sun Aug 20, 2023 7:28 pmassuming you have a proper !Boot sequence, it should update the Wimp during start-up.
How to set "proper !Boot sequence"? I don't have anything configured yet, it just tries to boot from floppy when I turn the machine on. I have just today replaced my old mechanical IDE drive with a DOM (formatted with a !System dir on it).
sirbod
Posts: 1624
Joined: Mon Apr 09, 2012 9:44 am
Location: Essex
Contact:

Re: Technodream on emulation

Post by sirbod »

wmd wrote: Mon Aug 21, 2023 4:32 pm How to set "proper !Boot sequence"?
I'd start with Uniboot and update it as/when required.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

I am trying to get Uniboot2 onto my system using the split zips from the page you linked to. What format (filename, filetype) is !Joiner expecting the split files to be? At the moment I have them as "UB/zip01", "UB/zip02", etc. but I get lots of errors when running !Joiner (flag number changes each time error is shown):

Code: Select all

flag = 100 :
ADFS::IDEDisc4.$.uniboot.UB/zip01
Also, the resulting joined zip can't be opened by !Spark (error = "Invalid ZipFile Header").
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

I decided to try SmallUni.zip linked to on that page, as it fits onto a single floppy (zipped). I put the !Boot onto the root of my HDD. I then put the Wimp module into the folder as you described. I then did *DRIVE 4 then *OPT 4 2. Here is the resulting drive showing the options:

Image

However, I am not sure it's booting as nothing seems to have changed when I powered off / on and TechnoDream still has the same issue. Also note in the screenshot that "*drive IDEDisc4" didn't work. Why is that?
User avatar
IanS
Posts: 2535
Joined: Mon Aug 31, 2009 7:02 pm
Location: UK
Contact:

Re: Technodream on emulation

Post by IanS »

Did you look in the "Extras" folder? (There should be some uniboot files, not tried them in a while, but they should work)

Don't have a !boot and !Scrap/!System/!Fonts in use at the same time. !Scrap/!System/!Fonts are inside the !boot folder.

You also need to do "*configure boot" to get it to run the boot at power-on. You may also need to *configure the drive number, it may be trying to boot from drive 0 (the floppy)

Code: Select all

*adfs
*drive 4
*opt 4,2
*configure drive 4
*configure filesystem adfs
*configure boot
What happens now?
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

That worked, using the !Boot from the Extras folder. Boot took quite a long time, I am assuming I can significantly trim that? TechnoDream worked up until I completed stage 2, then got this error:

Image

I also noticed that RISC OS windows now had textures. Can I disable that? The border was also black instead of the default grey.
arakeen
Posts: 28
Joined: Fri Jul 03, 2020 7:42 pm
Contact:

Re: Technodream on emulation

Post by arakeen »

Thanks for posting the links, much appreciated.

I had the same issue with loading Stage 3. When I looked at the files I saw that many of them were being extracted as text files, whereas my original copy had them as generic filetypes. Copying the affected files from my original Technodream to the newer version has resolved all the issues for me.

If you're using HostFS it's probably possible to rename the files there to update the filetypes within the emulated RISC OS. I've attached a complete dump of the file list for general reference, and I'll send you a PM.
Attachments
tdream.txt
(45.2 KiB) Downloaded 37 times
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

I thought this may be happening because I installed the games onto HostFS first before zipping then transferring to my A3020. But no, I just tried installing to a HDD image in Arculator, and many of the files are still showing as text files. Odd.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

Looking at that file list, it seems that many of the files that end up with text file types after installing should actually have no file type. How can you set the file type to nothing? I tried just deleting the file type (setting it to nothing) but RISC OS comes up with an error.
Sophira
Posts: 113
Joined: Mon Sep 26, 2022 9:45 am
Contact:

Re: Technodream on emulation

Post by Sophira »

That's merely an artifact of how HostFS handles the Text (&FFF) filetype. Any files that don't have a comma followed by something else (for example, !Techdream.Titles.GFX) should be set to the Text filetype. (Of course, this doesn't apply to directories, which can be distinguished by a "d" at the left of the Mode column.)

---

The files which have names like ZONE1,20000-20000, on the other hand, are slightly different. These have load and execution addresses instead. These are a little more difficult to set in RISC OS as filetypes were intended to replace them. The only way I know of to set those is by using the *Load command to load the file into memory into a specific location, then the *Save command to save it back out and specifying the load and execute addresses manually.

Note that there are two very important things to note about these commands. Firstly, all numbers are in hexadecimal even without using the "&" prefix! Second, the *Save command has you enter the execute address first, though thankfully that doesn't seem to make a difference here.

For example, to set the !Techdream.Techno3.Stage2.ZONE1 file addresses (load address &20000, execute address &20000) properly, you would (after making sure you have a backup!):

1. Press F12 to get to a command prompt. (Don't use a task window for this; there's a risk that something else could end up corrupting the memory before you save it.)
2. Type *Load ZONE1 20000. This will load the ZONE1 file to address &20000 in memory. (It's not required that we load it there, but it's generally a good idea to load them into their intended load address point.)
3. Type *Save ZONE1 20000 + 2a78 20000 20000. (See below for explanation.)
4. Press RETURN to get back to the desktop.

An explanation of the numbers in step 3:

20000: This is the address we want to start saving from. We loaded ZONE2 into address &20000 in step 2, so we want to save from that part of memory too.
2a78: This is the length of the file we want to save. The original file was 10872 bytes long, and converted into hexadecimal (remember, all numbers are hex!), that's &2a78. (Note that there's a "+" before this number - that signals to *Save that we're specifying a length, not an end address.)
20000: This is the execution address we want to give the file - the second number in the HostFS filename.
20000: This is the load address we want to give the file - the first number in the HostFS filename.

If there's an easier way to do this, somebody please let me know!

[edit: Sorry for the edit spam, I keep noticing mistakes >_<]
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

Thanks for the info. I haven't tried messing around with the filetypes yet. I wanted to know if the original disc release had the requirement to first set monitor type before loading? Uniboot slows boot time significantly and I would rather not have to use it just for one game.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

OK, seems that the original release does not behave the same way as this CD release (confirmed on the JASPP youtube video). The original release just boots straight to the game.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

I managed to find a way to bypass the monitor selection dialogue to get it running on standard RISC OS 3.1:

- Rename !Run to !Run_old
- Rename !RunC to !Run
- Edit !Run as per the following:

Code: Select all

WIMPSLOT -min 627K -max 627K
QUIT
Set Tech$Dir <Obey$Dir>
|<Tech$Dir>.!Setup
<Tech$Dir>.MemAlloc
SpriteSize 32K
SLOAD <Tech$Dir>.LOADING
RMLOAD <Tech$Dir>.ExSound
<Tech$Dir>.TITLES.FONT
BASIC <Tech$Dir>.TITLES.BootUp
- Save !Run file
- Place a copy of MemAlloc into the !Techdream dir.
- double click !Techdream to run game

Note that you will still need to set the filetypes as per posts above or the game will still crash after stage 2.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

I'm trying to create a basic program to set all the filetypes, as per Sophira's post. However, I seem to have forgotten how to do paths in BBC BASIC:

Image

Anyone spot what I'm doing wrong?
User avatar
IanS
Posts: 2535
Joined: Mon Aug 31, 2009 7:02 pm
Location: UK
Contact:

Re: Technodream on emulation

Post by IanS »

You can't pass basic variables directly to star commands, everything after the * is sent directly to the OS.

You need to build the command into a string and use OSCLI.

http://www.riscos.com/support/users/fir ... chap13.htm this should give you some hints
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

Thanks for the pointer, got it working now. About this bit in sophira's post: "Don't use a task window for this; there's a risk that something else could end up corrupting the memory before you save it" - does that still apply if I have all the *Load and *Save operations in a single BASIC file and run all at once by double clicking the BASIC file in the WIMP env? If there is still a risk, is there anything else I can do to protect each block of memory as I load it?
sirbod
Posts: 1624
Joined: Mon Apr 09, 2012 9:44 am
Location: Essex
Contact:

Re: Technodream on emulation

Post by sirbod »

wmd wrote: Mon Oct 23, 2023 9:22 am OK, seems that the original release does not behave the same way as this CD release (confirmed on the JASPP youtube video). The original release just boots straight to the game.
I would not go by the JASPP videos as gospel, they're demonstrating the game running via virtualization and code translation under ADFFS on a Pi.

The Boot scripts used with ADFFS are heavily rewritten from the game's original !Run. Wimp front-ends that have no options are generally removed and in this case I suspect I removed the monitor selection when the game is run under an OS that supports GraphicsV. There's also a lot of bug fixes and memory management in many cases, not to mention preventing games from messing with the BIOS and Unplugging Modules.

Provided you're using unmodified games, you can use the ADFFS scripts for HD installs as per the details in the link above. In many cases the script details how to HD install the game.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

That's interesting, I didn't realise ADFFS had that aspect to it. I'll check it out as it would be nice to use HDD installs, especially for multi disk games.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

Here's my BASIC program to fix the data files:

Code: Select all

PROC_Fix(".Techno2.CHARS","20000","18A2")
PROC_Fix(".Techno2.DeathPic","7d000","3B5C")
PROC_Fix(".Techno2.DiscIII","20000","27E8")
PROC_Fix(".Techno2.EndScreen1","20000","940E")
PROC_Fix(".Techno2.EndScreen2","20000","90EA")
PROC_Fix(".Techno2.FadeTable","954C","100")
PROC_Fix(".Techno2.HighScores","A0C24","160")
PROC_Fix(".Techno2.KeyDefs","8fC0","30")
PROC_Fix(".Techno2.LaunchBG","20000","28E2")
PROC_Fix(".Techno2.MainCode","9000","A404")
PROC_Fix(".Techno2.MainGFX","20000","9868")
PROC_Fix(".Techno2.StartCD","9f00","1E0")
PROC_Fix(".Techno2.StartGFX","20000","1A42A")
PROC_Fix(".Techno2.TechnoDeth","20000","1640")
PROC_Fix(".Techno2.Z2","20000","2A78")
PROC_Fix(".Techno2.Zone2","20000","2AAC")
PROC_Fix(".Techno2.Stage1.Aliens1","20000","57D8")
PROC_Fix(".Techno2.Stage1.ALIENS2","20000","5D6A")
PROC_Fix(".Techno2.Stage1.BackG1","20000","18C74")
PROC_Fix(".Techno2.Stage1.BackG2","20000","84CE")
PROC_Fix(".Techno2.Stage1.ZONE1","20000","1FE4")
PROC_Fix(".Techno3.DISCII","15100","27EC")
PROC_Fix(".Techno3.MainCode","9000","A404")
PROC_Fix(".Techno3.Stage2.ALIENS1","20000","6E08")
PROC_Fix(".Techno3.Stage2.Aliens2","20000","583E")
PROC_Fix(".Techno3.Stage2.BackG1","20000","1B8E6")
PROC_Fix(".Techno3.Stage2.Zone2","20000","2A78")
PROC_Fix(".Techno3.Stage3.Aliens1","20000","65FC")
PROC_Fix(".Techno3.Stage3.Aliens2","20000","3D78")
PROC_Fix(".Techno3.Stage3.BackG1","20000","11104")
PROC_Fix(".Techno3.Stage3.BackG2","20000","1F3D4")
PROC_Fix(".Techno3.Stage3.ZONE3","20000","294E")
DEF PROC_Fix(file$,addr$,len$)
path$="ZIDEFS::ZIDEFS4.$.Games2.TechDream.!Techdream"
OSCLI("*Load "+path$+file$+" "+addr$)
PRINT "loaded:"+file$+" "+addr$
OSCLI("*Save "+path$+file$+" "+addr$+" + "+len$+" "+addr$+" "+addr$)
PRINT "saved:"+file$+" "+addr$+" + "+len$+" "+addr$+" "+addr$
ENDPROC
However, it crashes at the following line:

Code: Select all

PROC_Fix(".Techno2.FadeTable","954C","100")
The reported error is: "Syntax error, Bad program". Can anyone spot what the issue might be?

Image
steve3000
Posts: 2909
Joined: Sun Nov 25, 2012 12:43 am
Contact:

Re: Technodream on emulation

Post by steve3000 »

You’re overwriting your BASIC programme when you load FadeTable at 954C.

Load your programme into BASIC and PRINT ~TOP to see where it ends.
User avatar
IanS
Posts: 2535
Joined: Mon Aug 31, 2009 7:02 pm
Location: UK
Contact:

Re: Technodream on emulation

Post by IanS »

You're loading the file on top of your program.
ren_files.PNG
edit: Steve beat me to it.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

What's the recommended solution then? Can the BASIC program be loaded into a specific part of the memory, or need to use an offset when loading the files?
sirbod
Posts: 1624
Joined: Mon Apr 09, 2012 9:44 am
Location: Essex
Contact:

Re: Technodream on emulation

Post by sirbod »

wmd wrote: Thu Oct 26, 2023 12:17 am What's the recommended solution then?
Allocate a block of memory?

Add a DIM to the start:

Code: Select all

DIM data% &20000
And modify these two lines accordingly:

Code: Select all

OSCLI("*Load "+path$+file$+" "+STR$~data%)
OSCLI("*Save "+path$+file$+" "+STR$~data%+" + "+len$+" "+addr$+" "+addr$)
Boydie
Posts: 767
Joined: Sat Oct 24, 2015 9:25 am
Location: Sunny Wigan
Contact:

Re: Technodream on emulation

Post by Boydie »

Over the years I’ve had quite a few issues with HostFS changing filetypes to text, and breaking the software.

Easiest solution I’ve found is to use hard disk images (adfs or scsi seem to work). These seem to be better at maintaining file properties and preserving stuff as it was, admittedly with the restrictions appropriate to the filing system of the era. HostFS seems to be more vulnerable to the vagaries of whatever OS/filing system the emulator is running on.
User avatar
wmd
Posts: 340
Joined: Wed Feb 03, 2021 10:16 pm
Contact:

Re: Technodream on emulation

Post by wmd »

I already tried installing to the emulated hard drive and to RAM disk, but the file types are still not set correctly. I haven't noticed it on any of the other APDL CD ROM games, it's just this one.
Post Reply

Return to “32-bit acorn software: classic games”