Thursday, November 23, 2006

XeO3: Please Wait....Loading............

I was testing out TNT's new 1581 turbo loader last night, and WOW! what a speed. The whole thing loads in less the 10 seconds! Thats 179 blocks (45k) that load in a blip! While speaking to Luca I had mentioned that if I thought that most folk had a 1581, then I wouldn't worry about packing in the front end to the main EXE as it would all load in under a second! Pitty...Oh well, I guess the only way to really guarantee that kind of thing is to make a proper cartridge game; which is also somthing I considered BTW. Using a cart as a large instant Disk would be very neat, and I do think I'll do an MMC64 version that does just that! Once

the C64 version is done, I'll start splitting it off into parts and putting them on a memory card so that it can act like a cartridge. This not only gives instant loading, but also a huge capacity. I wonder how many MMC64's have been sold? The good thing is that unlike the SuperCPU, these are still being sold! So if someone wants to play XeO3 from cartridge, they can run out and buy one! I'll have to do a little investigation as to how it all works, but from what I've seen, it should be easy enough.

I wonder how much these cost to make.... If you could get it down a bit, you could bundle one with the game and sell it cased so it looked like a normal cart - even though there was an MMC inside! Althought thats probably taking it too far.....

18 comments:

Algarbian said...

Tops! I would certainly buy a cart of XeO3 as I have no floppy/disk drive :)

Anonymous said...

Has there been a drive poll at Plus/4 World? If front end takes <1 second with 1581, it's still only two seconds with 1541/1571. I might manage to write 1551 loader as well, and I bet it would be faster than 1541. Supporting 154x+157x+1551+1581 would cover most of the user base, I think. Are there more drives to consider?

I think MMC64 prduction runs have been 250 cartridges each, and second run was done in February/March. That would mean something like 300-400 sold MMC64s.

Making MMC-cartridge for single game is overkill. If you need it only to stream in data for loader then you can use something like 256/512 KB banked ROM and cut down the cost considerably.

--
TNT

Mike said...

Oh, you should really get a disk drive! They're pretty cheap on ebay these days- particually the original 1541.

Yeah...MMC would be over kill.... But theres a really interesting 8bit Compact Flash interface for the speccy thats "just" a few wires, and no chips. I wonder if I could do that on the +4. 300-400 MMC64's is pretty good as you know these folk are "hard core" C64-ers.

Yeah, a poll would be interesting - but at the moment I still think having the front end as part of the main program is the best thing. SOmeone else can detatch it later if they want. :)

There are a couple of "compatible" drives out there that I worry about...

Anonymous said...

MMC interface can be done with half a dozen wires, three resistor and one voltage regulator if you do low-level transfer with host CPU. That slows it down to one bit every 20 cycles on C= machines, but it's still faster than most disk loaders.

There was an interesting DIY project for C64 which used serial register of 6526, speeding the transfer to one byte in 32 cycles. Website seems to have disappeared, sadly.


--
TNT

Mike said...

Yeah, thats about what I was thinking about. Thats about the same speed as the 1581 turbo loader you did - which gives around 5 1/2 K a second, which is really good for the cost - and plenty fast enough for a game!

The issue actually would be getting small/cheap MMC cards! These days youre almost force into buying 128Mb and above! And these still cost £7-£10. If you could have a large source of 4 or 8Mb ones for £1 each or something... then it would REALLY be worth while doing!

do you know the website address? Theres a couple of internet caches that sometimes saves these things....

Chicken said...

Only very few plus/4 users have a 1581 (and probably even less have a 1571). Most have a 1541. 1551 drives are a bit rarer but quite popular in certain countries, especially in Germany. The Oceanic and other 1541 clones are not very common among plus/4 users. I guess a "compatibility mode" without speeder should do for them.

A 1551 speeder should be definitely faster than the 1541 one. That's why I suggested loading the entire games with a 1551 speeder anyway even if you don't write a dedicated one that can stay in RAM. The weapon of choice (Csory's speeder) should take around 5 secs for 180 blocks. It switches the screen off but 5 secs is not long enough for watching a loading screen anyway ;) Level data loading without speeder won't hurt too much on a 1551.

Btw, it takes just 5 bytes to check if the previous floppy access was from a 1551 so you should include an automatic selector.

jsr $eda9
bcc 1551 is used

On plus/4 and 1541 drives the "UI-" (ElCheapo speeder ;) ) works if the screen is switched off. Though, thanks to TNT, there's a much better solution around :)

Anonymous said...

I found the Sidewinder MMC project address in my emails, and Wayback Machine has the old version archived. If you plan to experiment with it, you can use old PC floppy connector as MMC/SD connector. See this and this :)

The best source of small memory cards are people upgrading their digital cameras - even some new cameras are still sold with 16 MB card.

I use M-R command to detect drive type. Reading reset & IRQ vectors at $fffc-$ffff tells if drive is 154x/157x, 1551 or 1581. One drive signature takes 4 bytes.

--
TNT

Chicken said...

Well... by using jsr $eda9 you don't need to open a channel. Didn't you say "faster is better"? ;) Since the speeder code for the 1551 will differ from the serial drives it might make sense to decide between 1551 and serial drives before checking which serial drive is used.

16MB MMCs are rare, in fact anything below 64MB is. I was looking for them a while back because my "vintage" MP3 player (got it in 1998, anyone interested in? ;) ) couldn't handle anything above 128MB (yeah... "future proof" :/). Unfortunately, the internal controllers changed so MMC is not MMC and new 32-128MB MMCs don't work either. I heard some mobiles have similar problems.

For new cards retail prices for 32MB-256MB (maybe even 512MB) are almost the same (8-10 Euros here), so why bother unless you find someone who sells a huge heap of 32MB cards for a really low price.

I hope someday I'll find someone who builds a 1541III (that other MMC/SD "drive") for me, or someone develops some MMC/SD port on plus/4.

TNT, do you have a 1551?

Anonymous said...

Won't I still need to open command channel to send the code to drive? :)

154x/157x/1581 code is basically the same for all drives, there are just some address changes. 1551 code is likely to be something completely different (if I end up writing it).

C= 264 series is nearly non-existant here in Finland, so I don't own any myself. I have a borrowed C16, but all loader code has been written with Yape. Drive code is exact copy of my C64 loader, plus/4 code is modified slightly.

(I already hear angry mob calling me EmuLamer... :)

--
TNT

Chicken said...

No, code gets magically transfered into the 1551 but only if you use jsr $eda9 ;)

Many years ago I mailed with Marko Mäkelä so I knew at least one C16 exists in FI :) If I remember correctly, he got his in Germany.
Isn't Santa Claus supposed to be from FI? Add "plus/4 and 1551 drive" to your wishlist :) Or C16 if you prefer the C64 style keyboard (I don't).
It's really more fun than using emulators but I won't give you an "EmuLamer". For some ppl that's the only chance to see plus/4 software. And if it helps to get plus/4 software done... I'm happy :)

Mike said...

Yep, that MMC is kind-of what I was thinking about....athough I think compact flash gives you 8bit access which might make it easier to map in. I did try looking for small memory cards, and like Chicken - couldn't find any. In fact, once they dipped below 128Mb, the prices started to go up again! I know theres millions of little ones sitting in peoples drawers doing nothing, but I have no idea how to get them :)

We did wonder about using a small/cheap EEPROM, FLASH, or even a PIC to do a boot loader on a cartridge which then loaded a file from the compact flash.... but who knows...

Mike said...

Oh....and thanks for posting the link to the MMC stuff.... :)

Anonymous said...

After activating my spare brain cell I realized that if you want your cartridge to autostart you need real 8-bit (EEP)ROM. Using serial memory like MMC actually adds components instead of reducing them.

If I was building cartridge, I would use something like 29f040 with banking logic. 512KB Flash cartridge is something I would pay 50 euros for without thinking twice. Pre-flashed game would be just nice bonus :)

--
TNT

Chicken said...

Mike,
there's another CF card interface for the Spectrum here, it's a little more than just wires but obviously quite simple, too. Maybe that's the one you were talking about anyway ;)

http://members.tripod.com/~piters/zx.htm

Or directly to the CF card interface...

http://members.tripod.com/~piters/zxcf.htm

I have bookmarked this guy's (now sicontinued) Smart Media card interface a while ago (http://members.tripod.com/~piters/smartmc.htm) and now saw that he did a CF card interface as well.

Anonymous said...

I just found this for small, cheap MMC cards. $37 for ten 32 MB cards, free shipping within U.S.A. - just get someone buy them and mail them over to you.

--
TNT

Mike said...

Yep that was the compact flash interface I was looking at, although I hadn't seen the MMC one before.


Thats getting a bit better for price, but to do any real numbers, you'd have to pay out a small fortune....

Since it would be a general flash reader (either compact or MMC), perhaps getting people to send one would solve it. Then all your doing is copying on the game, and boot loader.... I dont know... still a lot of work involved in that - and you'd lose the SID card if you used the expansion port (which would allow you to BOOT from it.)

JamesD said...

Sidewinder appears to use the port built into the C64 CPU. It would work on the Plus/4 and C128 as well but not other 6502 system since a standard 6502 doesn't have the same port.

Here is another Speccy MMC interface.
http://www.zxbada.bbk.org/zxmmc/index.htm

JamesD said...

BTW, the Sidewinder would conflict with any device already attached to that port... which I believe is in use on the Plus/4.