Update

Posted in Uncategorized on November 8, 2011 by pcedev

Things have been busy for work, very busy. So things have been really slow to a crawl for everything else PCE hobby coding related.

I’ve been in contact with Dave Shadoff over the summer and managed to fix a few tiny bugs in Dead of the Brain translation project. But there’s one more somewhat major text alignment bug that needs to be ironed out. When I get some free time, I want to devote it to getting this fixed.

Other news: I started work on Megaman 2. The game requires some extra video emulation, but I’ve figured out how to handle it. I also changed a few things for Megaman emulation; the screen shows more visible floor (bottom screen) area and the video emulation now turns ‘off’ like a normal NES (although it’s a 1 frame delay because of timing potential problems).

There’s been some other stuff too, but it’s been so long now that I’ve forgotten what it was :P

Art…

Posted in Uncategorized on August 1, 2011 by pcedev


(credit: thefox and Banshaku)

Ol’ natural :o

Posted in Uncategorized on August 1, 2011 by pcedev

I have plenty to post about, but meh. More important things first! I picked up a brand new, but old microsoft natural keyboard – for $5. It was missing the box, but this sucker is brand new. The original model, 59758. I’ve been using M$ split keyboards decades now, but man is it wonderful to use this baby. The keys are stiff like day one. The color is perfect (no tinging). It’s a really beautiful keyboard. I’m sooo in keyboard heaven right now…

Alter Ego

Posted in Uncategorized on July 25, 2011 by pcedev

Nes NES homebrew by Shiru/Kulor/Denis Grachev

Edit: This is a little old by now, but I guess I should post it anyway :D
Super Bat Puncher for NES by Miau:

Megaman

Posted in Uncategorized on July 25, 2011 by pcedev

Updated a few small things. “Screen off” emulation now works. A tweak to the audio here and there. Repositioned the screen to show more of the bottom area; now you can see the floor and full enemy in Iceman’s level.

I’ve decided to start some work on two other NES projects. Megaman has by far been given most of my attention out of the NES projects just for the very fact that it’s one of my favorite original NES games I played when I first got the system… way back when. That got me thinking. Another game I loved BITD was Megaman 2. I looked into this after mednafen author told me about how the game only uses mirror switching for the vertical scrolling Willy stage “map” parts (and opening cinema too). Else, the rest of the game uses fixed mirroring for tilemap layout. Easy enough.

But out of curiosity, I designed a method to emulate both H and V tilemap mirroring on the fly on the PCE. It eats up a little more resource since it needs an Hsync call every 8 scanlines, but it’s completely doable. That means H, V, and single screen mirroring of MMC1 are completely emulatable in a dynamic state on the PCE. This lead to me another game that I really wanted to work on; Metroid.

So I’ll be starting work on both games, Megaman 2 and Metroid. I have a feeling Metroid might take a little longer using my usual methods, just because of the type of game it is. And because there are no tools out there specifically to help me track/log these address read/writes, I think I’ll write a simple NES emulator on the PC. I looked over mednafen source code to see if I could make modifications and additions, but it’s daunting. I’ve already written emulation code for the NES hardware once, on the PCE, so it shouldn’t be much of any problem to do the same on the PC. I’m not looking for complete accuracy, just a tool to assist in tracing and logging specific events.

Also, here’s the link to the newest hucard Megaman build: http://www.pcedev.net/nes2pce/megaman_098_hu.zip
It has the header removed, for people using the Neoflash card (thanks to Chilly Willy for the info).

Edit: Also, I was informed a couple of months back that the CD release of Megaman won’t burn on some software because the ISO isn’t a multiple of 2048bytes (sector). Weird. I’ll fix it and upload a CD version soon.

Update

Posted in Uncategorized on May 24, 2011 by pcedev

Sold off a bunch of retro stuff to pay bills :/ , but at least I still have a place to live ;) Got some work too, finally. My health has recovered, though stress is still there due to unknown length of job/work. Livin’ day to day, basically. C’est la vie, such as the cliche goes.

Some info PCE related (why not, this is a PCE dev blog after all). I/O – gamepad port. The SGX has a wonderful I/O port made in additional to the PCE’s port. They’re shared, until something is detected on the SGX front port – then gamepad is disabled. But that’s not what this post is about, although the SGX has the nice luxury of quite a few input and output lines. This is about the original PCE’s input and output lines. To be blunt, 2 output lines and 4 input lines. The 4 input lines, not so bad actually. It’s the output lines that cripple the port IMO. But there’s a saving grace that NEC (or Hudson) in their wisdom, gave us. All the gamepads use a 74×157 stock TTL chip. There’s a specific characteristic about this 2line to 1line switch. When Reset is held, all 4 output pins are driven low (read as 1′s on the CPU side; low =1, high =0). What does this mean? It means you can daisy chain devices on the port. The I/O port itself lacks any /RD or /WE or /CE such lines. So you can’t setup a simple self clocking device every time the port is read. What you have to do instead, is use the output pins to clock any devices manually.

My interests comes directly from wanting to communicate with the PCE. PC is the host, PCE is the device. You send commands/requests to the PCE. The higher level protocol isn’t that important; it can be anything really. It’s the low level communication protocol that’s tricky. With only 2 bits for output, you’re very limited to how you can chain multiple devices to the single port. My situation calls for three things; a comm port (to/from the PC), a keyboard port, a mouse port, and a gamepad port. I don’t plan on using official PCE mouse. I don’t have the money to buy one, plus I have spare MCU’s laying around and plenty of spare PS/2 mice. I’ll make my own converter for that (though I’ll probably replicate the PCE’s official mouse protocol). Same for the PS/2 keyboard reader.

I won’t bother explaining the boring low level protocol details now (some point later, possibly with a video of it working on the real system), but the last key component was how to pass control of the port to the gamepad or TAP. I figured a time slice or window would be the best approach. But one would need to be able to detect when the ‘comm’ device has transitioned control to the gamepad device. And that very method is the Reset line held high for the ’157. It forces all output lines low, so no matter what the pad button states are – it will always be 1111b upon reading it. With the ‘comm’ device, you request a gamepad device time slot – then poll the read port until you get the gamepad ‘ID’ value.

As for the ‘comm’ device itself. For now, I have a ’877a MCU up and running. Though I’ll probably end up using one of the faster 18 series PIC chips. The MCU itself doesn’t directly communicate with the PC. That’s handled via a USB to parallel device (looking at a FTDI 245R currently).

Some background: Looking for ways to communication with a PC; legacy ports seemed too messy. And are being phased out. My main PC lacks a par port, but has a serial port still. I had toyed with the idea of doing a ‘shared file’. I would emulated basica ATA command set via the MCU and make a virtual FAT32 small drive via some SRAM connected to the MCU. Nothing complex, just a MBR, FAT, and a root directory only and a single file. The PC and PCE could both read/write to this file. For interface it to the PC, I would connect the I/O lines of the MCU that emulate the ATA HD device, to a ATA to USB external adapter. It’s practical, no comm ports or drivers needed, etc. The main thing with this ‘comm’ device (in whatever conceivement), was so that it could be replicatable via other people. I.e. I wanted an environment on the PCE that had access to a keyboard, mouse, gamepad, and PC. First soft to use this environment would be music related (tracker or such), but I had other plans as well. The other reason why I had thought about the shared file approach and emulating an ATA device, is that I was looking into ATA PI protocol. Basically SCSI packets over ATA interface. It’s what CD/DVD/etc drives use. It’s not exactly SCSI, but it’s very close (for CD drives, that is). PCE also uses a SCSI packet type interface to communicate to the CD rom drive, for the CD addon. I guess you can see where I was going with this. It wouldn’t be too difficult to get a MCU to translate on the fly the SCSI type interface and status bits of the original NEC CD MCU controller, to a more modern CD drive (or even emulated drive ;) Hudson CD dev system was just this; an HD emulating a CD drive tracks). Of course, this wouldn’t be a complete solo project of my own. If I were to tackle that in the future, I’d definitely would need some assistance (on both sides of the fence). But that’s a topic for another day.

First things first. For now, I don’t have the 245R. So for the ‘comm’, I’ll just have the PCE access it in different ways (read out data, write in data (eeprom), etc), and get the pass through code working. Current PCE gamepad code put about ~1500ns delays from selecting the port, to reading the port. That’s too fast for the MCU to do it internally as it is now, which isn’t using any external chips. Internally,in pass through ‘window’ mode – the MCU just copies one port to another (two one for reads, one for writes). @ 16mhz, it takes 2000ns for one complete passing of the port data. It’s slow, but I’d be writing my own driver anyway. The 18 series has faster speeds and better instruction set. So I could get it down to less than 800ns most likely, and have it run in stealth mode on power up/on by default- so you could leave the comm device connected if you wanted to play regular games without having to remove it. The less chips on the port, the better. I don’t know how much power I can draw from the I/O 5v line and so I rather the total number of ICs to a minimum.

Arcade Card Pro

Posted in Uncategorized on March 16, 2011 by pcedev

Here:
4x KM48C512AT-7
1x HM628128ALT7
2x 84256A-70LL
1x Squarish (round edges) gloptop (probably AC chipset)
1x little smaller round gloptop (probably sys card ROM)

The PCB is long. It ends at the end of the ‘bump’. Two of the KM48C512AT-7 are on the top side of the PCB, right under the protective bump. The rest of the chips are on the bottom side. The chips sit fairly tall, so there’s no actually plastic for a large part of the card. Instead, there’s a thin plastic bridge running down the middle and a metal plate on the bottom of the card. It you look closely, you can actually see the outline of the edges of it.

So, 70ns FastPage mode DRAM. 512kbyte chips and four of them. The other three are SRAM chips. 128kbyte 70ns and two 32kbyte 70ns ones.

Oh, and the PCB is actually the thinnest I’ve seen for a hucard (yeah, I’ve take a few black PCB’s off the hucard plastic).

Still waiting on the government to approve my health insurance so I get a stop to this f-ing pain and reoccurring fevers. It’s pissing me off. For now, I’m living on overtaking naproxin and asprin.

Gonna be slow for a while

Posted in Uncategorized on March 6, 2011 by pcedev

My health is getting worse and it’s to difficult do any work. Doctor thinks the symptoms point to valley fever; waiting for the test results. And my other problem might be an ulcer (which would make sense with all the stress these past couple of months). But damn, it hurts like a muthafucka. If I feel better in between periods, I’ll post some small stuffs. Dunno when that’ll be. Currently on the fourth day of a fever run.

CD track handler

Posted in Uncategorized on February 20, 2011 by pcedev

I added in the CDDA track handler code. I wasn’t gonna yet, but (nameless) pointed out to me the playback routine for the game music engine from the NSF file – so I just put a hook in it and … well this is what happened (more or less). No, I don’t have the best selection of tracks. It’s just to show off the feature, really.

Lets try this again

Posted in Uncategorized on February 19, 2011 by pcedev

This is the new build:
http://www.pcedev.net/nes2pce/Megaman_CD_097a.zip

PLEASE be fare warned that I take no responsibility in what CDR media does to your system. Play it at your own risk.

If you’re a original Duo owner (black model, US or JP), you need to be aware of the “laser parking” issue. While I’ve never seen it happen for a tiny two track setup like this, it doesn’t mean it can’t happen. On the original Duo models, sometimes the laser seeks all the way to the end of the track and past it. It can get stuck there and you have to finger/rotate the gear/track mechanism to get it unstuck. People have theories as to why, but no one knows for sure what the exact problem is. From what I tested years back, media played a very big part. But it wasn’t a single factor. Burn speed (and crappy burners), which is relative and you can’t just applied it to any other brands/models, was an influencing factor too. Burning too fast causes the ‘pit’ edges to become sloppy. This throws off old CD laser as they have a tougher time trying to read them. Certain media don’t reflect enough are just barely adequate for these old CD laser, so you get random failures or skipping(audio) when reading. Others have speculated that if the original Duo laser unit is already on it’s way out, you’re more likely to have the laser parking issue. I can’t really say if that’s true or not, but when I did my tests I didn’t have a brand new out of the box Duo to test with.

The best CD unit that I’ve tested, is the SuperCDROM. That thing is a beast. The original CD, is probably a small step above an original Duo without a new laser replacement. I’ve never tested the later model Duo-Rs, but I’ve heard good things about them. But of all the system, it’s the original Duos that have the laser parking issue. That’s more serious than a simple read or skip issue. Please be aware of it. If you’ve had a new laser replacement for the Duo, I heard this gets rid of the problem.

Follow

Get every new post delivered to your Inbox.