28 May 2021, 21:30 | #1 |
Registered User
Join Date: Jun 2020
Location: Druidia
Posts: 388
|
Amiga Trackloaders
I've done a modest amount of Amiga coding in the distant past and now again recently.
However, I've only ever made self contained executables or intros. When targeting a 1meg A500 it seems like most games and demos choose to push things further with a custom trackloader. Are there some standard trackloader systems that games and demos commonly use? What could I use if I was making a demo and wanted to go this route? It seems like the main advantage is that you can access more Ram and have enough control over loading that it's possible to effectively stream data. Are there more advantages? Or any disadvantages? (other than hd install etc). Some demos like Sanity Interference are so-called dentros. These are interesting because they seem to be just large intros. But they're doing more than seems practical to fit in Ram all at once. Is there some alternative approach these dentros employ? Anyway I'm really curious what feedback people have. It seems like it would be pretty hard to put together a trackloader from scratch! |
28 May 2021, 21:53 | #2 |
move.l #$c0ff33,throat
Join Date: Dec 2005
Location: Berlin/Joymoney
Posts: 6,863
|
Rob Northen's loader has been used quite often (and is easy to find), Ross on this very forum has created a very optimised loader which can be used too, PHX (also on this very forum) has created his own loader as well. So these are at least 3 you can choose from and there are more of course.
As for advantages: being able to use all memory, faster loading than using plain old Amiga DOS and generally just having control over the complete system. |
28 May 2021, 23:03 | #3 | ||
Natteravn
Join Date: Nov 2009
Location: Herford / Germany
Posts: 2,496
|
I would add that you can use more of the disk space, because there are no administrative blocks from the file system anymore. Most important advantage for me is that it is the only safe method to load data when taking over the system and killing the OS.
Quote:
Quote:
|
||
28 May 2021, 23:46 | #4 |
OCS forever!
Join Date: Mar 2019
Location: Birmingham, UK
Posts: 418
|
I think the planet rocklobster source has trackloader code in it as well.
The last thing I wrote on my a1200 was a trackloader, it did clever stuff like reading DOS disks and checking which drive had the right disk. Never used it, and can't understand it now |
29 May 2021, 03:06 | #5 | |
Zone Friend
Join Date: Mar 2004
Location: Middle Earth
Age: 40
Posts: 2,127
|
Quote:
WinUAE AmigaDOS 1.3, OCS 512K RAM, 1 Disk Drive shows Code:
Available In-Use Maximum Largest 426400 89464 515864 425544 NTSC 417440 98424 515864 416584 PAL |
|
29 May 2021, 04:41 | #6 | |
Registered User
Join Date: Nov 2017
Location: Los Angeles
Posts: 49
|
Coming back to the Amiga after 20 years I wrote my first track loader a few years back and it was super fun. First writing it in C and then again in asm for my bootblock.
I think like anything low level on the Amiga, it is for you to decide if this sounds like a fun and interesting challenge or not. Quote:
The biggest gotcha however, I think, is one I ran into that caused sporadic problems only on real hardware and only very occasionally. It was caused by an undocumented behavior (at least wrt the HRM) relating to how many syncwords will be present in your buffer once a read has completed. Trivial to manage when you know about it, but hard to debug when you don't. Again, this only happens on real hardware. Finally, you need to be super careful about not stepping the motor incorrectly on some models as it can physically damage the drive. This sounds terrifying, but the good news is that this part can be perfected in the safety of an emulator before you get anywhere near the real thing |
|
29 May 2021, 09:43 | #7 | ||
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,506
|
Quote:
There is even least one demo that does really short steps back to back accidentally. Drive must only step once in this situation. Undefined behavior is not in drive specs so finding good timing range is almost impossible, without breaking something else. And almost certainly there is at least some drive model that fails to work with this demo. When to report fail is the problem. Different mechanisms have different timing parameters, HRM reports one model. (AFAIK original A1000 drives were much worse than A500 drives) I guess optionally validating against HRM parameters would work but there are still many unknowns to make it useful except as: step pulse was too quick, don't do it. Can't even report steps <0 because of no-click programs. At least steps track >80 are logged Quote:
|
||
29 May 2021, 17:16 | #8 |
Registered User
Join Date: Nov 2017
Location: Los Angeles
Posts: 49
|
Thanks Toni - your insight is always appreciated.
The faults in my case all entirely lied with my code, and debugging them on real Amigas is simply the reality that is required to run reliably. For me it was part of the process and satisfying to resolve. I think you interpreted my comments this way, but to be clear: there is zero criticism of WinUAE here. The fidelity of the emulation is incredibly impressive. I guess WinUAE could conceivably have emulation options to try to emulate less tolerant drives or warn about certain unsafe behaviors, which would be useful to a very small set of users. Most users would never want these things enabled as they would prefer their software just be more likely to work even if it has bugs. |
29 May 2021, 18:56 | #9 |
Moderator
Join Date: Dec 2010
Location: Wisconsin USA
Age: 60
Posts: 839
|
@thread
I have edited this threads title because A500's don't have the monopoly on trackloaders... and hopefully, that's not such a big surprise. |
29 May 2021, 22:46 | #10 | |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Quote:
When I did Rygar I used Ross's loader... and it is very very good. However the problem came when I wanted to support CD32. If you make any sort of track loader then you are limiting yourself to anything with a floppy drive, that means no loading from hard drive or CD. Just keep in mind that it might be worth the memory hit for expanded compaibility. WHDload would be your friend though if you go the track load route - but CD32 would be a problem. Geezer |
|
30 May 2021, 19:00 | #11 | |
Registered User
Join Date: Aug 2018
Location: Untergrund/Germany
Posts: 408
|
Quote:
As amiga coding is already complex enough for me, i decided to dodge trackloaders. For my games and demos i compress all data and unpack at runtime. I see the 512kb of non chipram as my 'data' storage from where i usually depack to chipram. I like the lower complexity, HD installation by default, and i can go back to the system anytime. As drawback i loose some chipram to the system and the maximum data size is (a bit) smaller then a full disk. Tho never had a real problem with that.. |
|
31 May 2021, 13:17 | #12 |
Registered User
Join Date: Jun 2020
Location: Brno
Posts: 90
|
Might be worth a try:
SOS - Sanity Operating System Version 2.6 (1994) Chaos and Mr.Pet / Sanity used it in their productions. (I haven't tested it myself though) |
31 May 2021, 18:13 | #13 |
Registered User
Join Date: Jun 2020
Location: Druidia
Posts: 388
|
Thanks all for the suggestions. I'm probably not going to delve into writing my own right now since I don't actually have a pressing need for one yet. But it sounds like it would be fun at some point.
I'll probably just try to make do putting together a single executable. I could imagine taking the same approach as Pink and just compressing things as much as possible. What I'd be curious to know is how something like Sanity Interference works? Seems, I'll have to look more closely at that demo to see if it's doing any trackloading. When you start Sanity Interference it says it is a "file trackmo". I wonder what that means? |
31 May 2021, 19:44 | #14 | |
Going nowhere
Join Date: Oct 2001
Location: United Kingdom
Age: 50
Posts: 8,986
|
Quote:
|
|
31 May 2021, 20:23 | #15 |
Registered User
Join Date: Jun 2020
Location: Druidia
Posts: 388
|
You've missed the point.
As I said, Sanity Interference is a "Dentro". It's on a dos disk and the single file executable is 480k. However, there is so much happening in that demo that it seems possible it might do some mid-demo loading. But it probably doesn't. Still wonder if any demos did take such an approach? |
31 May 2021, 21:06 | #16 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Ross' track loader reads DOS FFS, crazy to reinvent the wheel really.
|
31 May 2021, 21:19 | #17 | |
Going nowhere
Join Date: Oct 2001
Location: United Kingdom
Age: 50
Posts: 8,986
|
Quote:
If you read most of the text in the loading part at the start, the majority of what they say is tongue in cheek nonsense including "file trackmo". There is no in demo loading, its all done as a single file that unpacks to extra memory. |
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Question about NDOS, Trackloaders, BootSectors etc | trackah123 | Coders. General | 22 | 28 February 2008 16:37 |
Some info wanted about common trackloaders | Dennis | Coders. General | 6 | 22 November 2007 19:47 |
|
|