Being not good at soldering and all, i was wondering if someone is ready to sell me a homemade flashcart or throught a trade of items, there are some homebrews that I would like to try on the real console…
If you have the space to waste on a cute picture of a VB you have room to install 2MB of ROMs π
Does this use capacitors or any other (non-flash) components? It looks like you soldered something to the board, but I can’t see what.
Basicaly for the boot loader you have to take over the top block of flash ram and virtualize the interupt table. So make a 8k program that loads a list of avalible games from the top of saved ram space, and gives you a menu of games to play or the option to load a game from the link port. thain when a game is running and it throws an interupt your interupt handler just jumps to the relocated game interupt table located either at a blank area in rom or at the end of sram space.
Your cart could have a 32k sram chip (or larger) to add extra space for the jump tables and other values. Besides you want to sell the cart as a development device and not a space invaders loader. So having the uper 8k of rom being inacesible would not be a big deal.
Also when reflashing the cart you lock the uper 8k in a ‘boot block’ (so get a top boot block chip) that can not be overwriten without some extra gyrations. 8k would be enough for your loader, a flash routine, the GDB (GCC Debuger) loader/debug routines and a generic set of librarys.
Speking of GDB, gdb has a rom resident boot loader that is designed to run over the serial port. This is the best way to implement the serial port loader since it already does everything you would want to do (read/write in bytes/blocks to any address space) plus it would let you run a debugging session right in hardware, great for development.
DogP, your flash cart is beautiful! Please give me the schematics and I will add an sram and /WE controll logic for you. I have $50 in free PCB development coming to me and I want to use it up.
David
Thanks for the compliments guys… I spent some time over Christmas break designing it, but then started the next semester of school and never got around to ordering it. Finally after last semester I got around to sending in the order. I basically got the most stripped down model (no soldermask, no silkscreen, no depanelizing, etc) since I didn’t want to spend extra on something that might become a (really bad) paperweight.
Lameboy… actually… I can do 2MB of ROMs… EPROM only though :/ . A PLCC 27C080 will fit right in… I just need to change the A18 and A19. I’ve only found PLCC OTPs though, which is even less useful (unless I want to pirate Golf or something π ).
The cart has 3 capacitors… the ones in the corners are .022uF, the one in the middle is 4.7uF. That H looking thing is actually for an inverter to use A22 as an inverted /WE… but I was playing with it on the logic analyzer last night and I think I’ve got a better way π . I wanted to use /ES, but you need /CE and /WE low with /OE high to program… expansion disables both CE and OE :/.
I’ll let you know tonight if my other idea works… it looked good at 4AM, but I needed to get up this morning for work, so I decided to put it off until tonight π .
David… I’d be glad to send you the design, but I did it with DipTrace, so you need the full version to be able to export to get the design made (30 day full trial is fine). I liked the interface, so I started making the design, then at the end realized that it’s totally useless without the full version π .
Personally… I wouldn’t make another PLCC style flash cart though… if the in-cart programming works, I’d go with a single 16+mbit 16 bit wide chip. That would give a lot more room for the SRAM chips, and get rid of the messy sharing of the address/control lines (well… it’d just share with the SRAM instead :P)
DogP
This is the the EEPROM I was thinking of using. The 28C64 claims it can be read and written to like SRAM, but as it is EEPROM no need for a backup battery.
And as for the /ES problem, couldn’t you tie both /WE and /CE to it? And when you say /OE is disabled do you mean its high or low, because IIRC writing needs it high/disabled. You could also use CS2 because IIRC CS2 is only high when SRAM is accessed.
Well if you tied /WE and /CE together, then you couldn’t _read_ from the flash, since any accesses to the ROM wouldn’t be to the expansion area, which would mean CE is disabled. And when I say OE (and CE) is disabled I mean high, like the enable is disabled. But like I said… I think I got it taken care of… going to mess with it now.
DogP
WOOOOOOOOOOOOOOOOOOT! It worked! Anyone remember that pesky pin 5??? Well… that’s a /WE! (not to be confused with a /Wii π )
Anyway, gonna modify the couple carts and make sure it never screws up, but watching it on the LA it doesn’t look like it’ll be a problem. Then I’ll work on a nice flash writing program from the link port. It shouldn’t be too tough… I’ve still got my link port dumper program, adding write capability shouldn’t be tough π .
DogP
…It took you this long to test writing? I’d have thought you would have tested that way back when you found the extra address lines years ago. :woah:
Way to ruin the fun of rerouting all the CSs/Es in order to read/write flash and RAM. π
Still, its great to know no juggling will be involved in writing flash. Just hope it works.
…And about a 2MB ROM, what type chip were you going to use? PLCC only goes up to 512Kx8.
…And while were on that, if I were to use 4x512K chips, how would I make sure the higher ones are only active above 1MB and vice versa?
Actually, I had tested writing in the past, but I never saw any action on that line as suspicious because it’s pretty short, and lookes random (it’s also connected to /UWR on the PSRAM, which I had seen before, but I didn’t understand why they brought it out to the cart edge).
If I just watch the line it doesn’t particularly look like it’s doing anything, but when I set the trigger for /CE, I noticed there were two pulses at the same time as my write (wrote 32 bits, which is two 16 bit wide cart writes), and on a read I noticed the two pulses moved back after CE was disabled, which is probably writing the data it just read.
Anyway, yeah… it works, I tied /WE to pin 5, played a couple different games, let it run for about an hour, no problems. Then I tested the write sequence and was able to write with no problems, then did a chip erase and ate my own program π . I gotta get the app into memory so I can do this stuff freely… hopefully I’ll get some time to mess with it today.
For the 2MB ROM, there are PLCC 27C080’s (EPROMs)… same as the 27c080/27c801 DIP that come in 8mbit, except these are the PLCC package. Same pinout except A18 and A19. I wouldn’t even think about trying 4 PLCC chips… see how much of a mess it is tying all of those pins together on the 2 PLCCs? It’d be a nightmare with 4! It’s not like DIP where you have the spacing between the pins that you can run all of the common lines straight on a line, and since there’s pins on all 4 sides you can’t just route them there either :/ .
DogP
I know there’d be a lot of tracks, but I was planning on making a cart that takes up the entire area inside the cart, not just the size of the curent VB PCBs.
Hope that would leave enough space for routing.
…So, any plans for a flashcart + SRAM/EEPROM? π
I don’t think you could do 4 PLCC chips inside the area of the cart… the chips themselves would take up most of the space, and there wouldn’t be enough room for the TONS of traces you’d need.
I’ll see about the demand for the flash carts… if people actually seem to care about it, I’d be glad to design a flash cart with SRAM (probably using TSOP or SSOP)… but for myself personally I have no need for it since programming over the link port isn’t particularly the most convenient method since popping the chips out, programming, then putting them back in is really quick and easy, and I’ve still got my hand-built SRAM cart if I need SRAM.
I also think in this loader I’ll allow small homebrew games to be loaded into WRAM and executed from there (instead of actuallly writing to flash), but I’ll have to try it out to make sure it’ll work (probably max size of 32KB though since the program is going to need memory too). That’d be nicer than having to wait for an erase and rewrite of just a small test app or something.
DogP
I for one would be interested in that. Would there ever be a chance of making full length homebrewn games? Over the past few months we have seen 2 experienced developers express interest in such a project. Could this be achieved, or is it something to aim for in the next few years?
Of course full length homebrew games would be possible… the problem is that we don’t have enough information to really make the high quality games. I mean… I’ve made several games, and I know lots of other people have made some games, but usually we’re making them basically as example source code for something new (my TicTacToe game was for the link port, 3D BattleBall was for the link port and direct screen drawing, and Simon was the simple game that I got familiar with VB coding on).
I’m working on other full games, like Mario VB and a few others, but it takes a long time, and it’s hard to get really motivated to try finishing the game when we still don’t have a lot of information about the hardware (Affine is still new and iffy… I think David has figured most of it out… and sound is still very unknown… and unless you have a VB with flash cart, it’s pretty hard to test). Instead I usually get motivated to work on figuring out the hardware so we can be that much closer to unlocking the full potential of the system, improving emulation, and allowing other programmers to use the info for their own creations.
KR155E has made a pretty complete game (BLOX), and it does look refined, but it really needs sound before a normal gamer would call it complete. And it would be really cool if there were some special effects added, but there were some released games that didn’t really use the hardware to it’s fullest, so I wouldn’t say that’s NEEDED.
BTW, who are the 2 experienced developers that have recently shown up? I guess I haven’t been very active on these forums recently, so I must have missed them. But as far as the history goes… we’ve had probably 8-10 experienced developers show up on the scene, but because of the limitations above, we still haven’t gotten a complete commercial quality game.
DogP
I can only remember one right now. He’s called ringman and he wanted to develop Kri55E’s silent hill idea.
As I have mentioned before, I’d be more than willing to compose music for any homebrewn vb games. I excel at atmospheric kinda stuff. Do you know how to put music on the carts? I’ve noticed that none of the current emulators have proper sound support…
I’ve figured out how to do a lot of sounds, but I wouldn’t particularly say I know how to do “music”. I know Frostgiant seemed to understand sound pretty well, and I think Parasyte did some too, but it’s not a simple thing like graphics are, where you just load a picture… there’s not really a way to just “load” a music file and play it. It’s really a thing you have to constantly take care of.
But like I said… we don’t totally understand sound, so it’s pretty hard to emulate it π . And even once we understand it, someone is then gonna have to write the emulation code π .
DogP
I thought we had information on how to do sound, its just that noone has carts to test it out. IIRC the first 4 channels are easy enough, its just the sweep/modulation and noise channels we haven’t fully figured out.
…Its a shame the VB doesn’t have sound interrupts. It would have made feeding the next note(s) in a music track a lot easier.
Plenty of us have carts, and we have done “sound” (I made a really lame thing that started out as a Mario Paint music editor that turned into a totally low level sound sequence generator), but I wouldn’t say any of us have really taken the time to master sound and write libraries to allow it to be handled at anything other than a totally low level.
And the Sweep/Modulation and noise channels aren’t really complicated either… sweep works just like it says… I was never able to really get modulation working how I wanted, although watching the output on the scope I could see what it was doing. And I guess I’m not sure about the actual sequence of tones generated by the noise (for perfect emulation), but it’s pretty much what it says… noise π .
Interrupts are another thing that would really be useful to making a full game, and although they’re not particularly hard to use, our libraries don’t promote the use, so nobody really uses them.
BTW LB, do you have an EPROM programmer? Or would you be one of the ones wanting to be able to program over the link port? Just trying to get a feel for what the dev’rs really want.
Oh, and when I actually put some up for sale, what do you think about having a programming contest or maybe a programming “coupon”… like either maybe get a month to program a game, all submissions will be freely released w/ source, and the winner for the best game gets a cart for programming and a dedicated cart of their game (with a special “gold” label or something π )… or maybe even just a programming coupon where if you send in anything written by _YOU_ (the person buying the cart) then you get 25% off or something. Really just looking for a way to promote coding and not just people too cheap to buy the semi-rare games π .
I’m sure neither of them would get a lot of response, but it might tip a few people over the edge to either start coding, or get back into coding. I mean… it’s the summer anyway, no “I’m too busy with school” excuses π , even if you’re taking summer classes.
DogP
Firstly, as I don’t have a programmer a link port version would be nice, but as I don’t have a link cable, and will probably buy a Willem for ROM/PIC/AVR work, I’m not sure.
I’d love a programming competition, unfortunately none of us have the spare time to do so. I’ll be starting my programming diploma in a few weeks, so I’ll have even less time than I do now. π
Not all of us are on summer holiday. π
Oh yeah… it’s winter down under, right? Ugh… I dunno… I’d love to get people motivated to start coding, but it probably won’t happen anyway :/ .
DogP
It WILL happen *slap* :p do you know of a site I could learn programming from? I’m willing to learn π
I would suggest borrowing a few books from your local library and starting there. There are a lot of free C++ compilers out there if thats where you want to start, but it may be better tp start with (Visual) BASIC and learn the basic principles of programming with that before you do more advanced stuff.
Also, video game programming is generally different to application programming. Instead of the standard input/output commands you would normally use instead you’re continuously accessing memory locations for things such as video and controller input.
Don’t know of any good online resources. I started on QBASIC way back in the DOS/Win3.1 days, and over time progressed to Visual BASIC, and more recently learned Java/C++ over the past few years.
The fact that I had learned programming in general made it easier when the time came to learn the syntax of C++.