Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
0 user currently in Programming. | 3 guests
Acmlm's Board - I2 Archive - Programming - Who wants to make an NES emu with me?
  
User name:
Password:
Reply:
 

UserPost
Dish
Posts: 272/596
New demo uploaded... along with the source!!!!!

Binary -- http://hypher.net/disch/NES.zip

Source -- http://hypher.net/disch/NESsrc.zip

The binary is showing off the nifty stereo effects. I might have went a little overboard with it, but it sounds pretty good I think ^^.

Anyway.... I made 2 changes from the EmuBackEnd.txt thing:

1) HardReset() has the slight possibility of returning NES_ERR_MEMORY
2) A 3rd option was added to the NESOPTIONS struct:

s32 nInversionCutoff;

It specifies a cutoff line for right channel inversion (in Hertz). When inverted channels play notes below the cutoff line, they will not be inverted (this is useful for people with subwoofers, since inverted waves don't work well with subbies). Setting this value to 0 (or less than zero) will disable the cutoff line and inverted channels will be inverted regardless of their frequency).


A few bugfixes and mapper issues solved. Still need to do some DMC things and fix some timing issues (some MMC3 games still have troubles). List of supported mappers (and example games):

0 -- Super Mario Bros, Ice Climber, Excitebike, Balloon Fight
1 -- Final Fantasy, Megaman 2, Blaster Master, Castlevania 2
2 -- Castlevania, Megaman
3 -- Solomon's Key
4 -- Megaman 4-6, SMB2, SMB3, Kirby's Adventure, Crystalis
7 -- Battletoads, Marble Madness
9 -- Mike Tyson's Punch Out!
10 -- Fire Emblem
11 -- Crystal Mines
24* -- Akumajou Densetsu
26* -- Madara, Esper Dream 2
66 -- Dragon Power
69** -- Batman: Return of the Joker, Gimmick!

* VRC6 expansion sound included!
** FME-07 expansion sound included! (in games that use it anyway: Gimmick!)

That's all for tonight.... I'm about ready to pass out
windwaker
Posts: 1115/1797
*later that day*

Works fine on this end.
Dish
Posts: 269/596
Hrm... hypher.net seems to be having problems =/

http://www.geocities.com/disch_/EmuBackEnd.txt

Alternative upload. The file's a little long but it should explain things well enough. It's not as complicated as it may seem. And of course feel free to ask me questions if something's not clear.

I'll really try and get the source up as soon as I can. I still want to finish up a few things.
neotransotaku
Posts: 2071/4016
I'm getting 404 when trying to access the .txt file
Lenophis
Posts: 364/830
Originally posted by Disch
------- EDIT -----------

http://hypher.net/disch/EmuBackEnd.txt

Promised txt file (took a little longer than I thought). Should explain things pretty well. I might add a few more options and crap when I release the next chunk of source. Still some things I want to do before I do that though.

Bumping for Disch because of new info. Man I REALLY wish I could code as well as I wanted to.
Dish
Posts: 268/596
Originally posted by neotransotaku
I wouldn't mind making a GUI for it. I'd like to learn how to program a windows interface using either the API or MFC.


I'd welcome any effort you'd be willing to give. And remember there's no pressure -- if you don't want to do it or you don't feel like working on it -- don't sweat it. I want a stictly "for-fun" stress free deal =)

I can help out with problems when working with the API. I'd recommend avoiding MFC. It's easier to start out, but down the line it becomes a big pain in the ass... especially for something of this nature.

I'll whip up a "blueprint" doc not unlike that "InitialEmuLayout.txt" file I linked to earlier which describes how the front end will communicate with the back end. I can't guarantee I'll have it done tonight, but I'll try. Definatly will have it by this time tomorrow (possibly some source by then too)


So, yeah not bad. Runs pretty well. Looks promising


Thank you ^^. This is the "best" full emu I've constructed so far. I'm really happy with how it's turning out.


Very minor graphics errors for the level selected part of Megaman 3 (could be the ROM).


My sources tell me that's how the game runs on the real deal (so it's a problem with the game itself, not the emulation)... but I haven't played that cart in ages so I couldn't tell you first hand. To my knowledge... emus that play it "correctly" either have bad MMC3 code or do some sort of CRC check and hackish tweak to correct the problem.


------- EDIT -----------

http://hypher.net/disch/EmuBackEnd.txt

Promised txt file (took a little longer than I thought). Should explain things pretty well. I might add a few more options and crap when I release the next chunk of source. Still some things I want to do before I do that though.
neotransotaku
Posts: 2037/4016
I wouldn't mind making a GUI for it. I'd like to learn how to program a windows interface using either the API or MFC. So, yeah not bad. Runs pretty well. Very minor graphics errors for the level selected part of Megaman 3 (could be the ROM). Looks promising
Dish
Posts: 267/596
I don't know if anyone is still interested in this (or if anyone ever was)... but I figured I'd update just in case... or just for the hell of it

Binary:
http://hypher.net/disch/NES.zip (READ THE README)

No source yet (see below)

Most obvious change is sound =P. I sort of half-assed the output (just wanted to get it working). So amplitudes and stuff aren't right... and other areas can use tweaking. DMC IRQs don't work yet... nor does the DMC steal cycles like it should... plus I haven't tested APU Frame IRQs (not sure of any games that use them... Hyde told me one but I lost that list!)

Corrected a few other things... added some mappers. Quick list:

0 - (SMB, Ice Climber, Excitebike, Balloon Fight, etc)
1 - (Final Fantasy, Blaster Master, Dragon Quest 4, Megaman 2, etc)
2 - (Castlevania, Megaman, etc)
3 - (Solomon's Key.... etc?)
4 - (Megaman 3-6, SMB2-3, Kirby's Adventure, a million other freaking games)
7 - (Battletoads, Marble Madness)
9 - (Mike Tyson's Punch Out)
24 - (Akumajou Densetsu)
66 - (Dragon Power)

it will also try to run mapper 10 (Fire Emblem) and mapper 26 (Madara), but I haven't had success with those yet.

Mapper 4 emulation isn't perfect... some games still have some issues (Wolverine flickers a bit, Mother (J) runs but has slight flicker when you open the menu, some others have problems)


Gonna fix up the sound issues, work on the backend->frontend communication, and try to weed out some of the other problems before I upload the source. If you're interested lemme know and I'll get it to you ahead of time.


This is turning out pretty well... so I'll probably eventually make a real Windows front for it... but I'd still rather have someone else field that end ;D. Anyway yeah... further comments/feedback/criticism welcome.
paradox
Posts: 670/703
Originally posted by Synneth Relmn
hmmm, screen shots and box arts for every game in the 700+ NES library? i see two big problems.

1. finding or creating screenshots and box art shots for over 700 games would be one helluva task

2. good images for all those would easily add several megabytes to the download size

for something that would only minorly improve it, it ain't worth it



Well, Thats why i asked for this feature... so you can add them yourselves... like any other rom manager... just on the emulator.
HyperLamer
Posts: 2868/8210
That's really the frontend's job, not the emulator's. It would be kinda neat but mostly just wasteful.
Now, what would be useful is the ability, if it doesn't exist already, to specify paths for everything. I like to keep my ROMs in one folder, SRAM in another, save states in another and so on, but a lot of emus insist on bundling them all together.
Chickenlump
Posts: 460/722
There are several front-end utilities for NES emulators that do all that and more, so building it into the emulator would be kind of counter productive for him, unless he decides that the front-ends aren't good enough.

Here is an example front end that is small and simple:
http://fec.emulationworld.com/nestea/

And here is one that is large and complex:
http://www.bu22.com/

More can be found:
http://www.zophar.net/frontends/nes.html
http://www.zophar.net/frontends/universal.html


Looking through all these now has me wanting to compile a complete NES snapshot archive...
Synneth Relmn
Posts: 39/144
hmmm, screen shots and box arts for every game in the 700+ NES library? i see two big problems.

1. finding or creating screenshots and box art shots for over 700 games would be one helluva task

2. good images for all those would easily add several megabytes to the download size

for something that would only minorly improve it, it ain't worth it
paradox
Posts: 667/703
Just a small Addition i think would make your emulator much better then others.. Have a section with all known NES games (and a section to add new ones ourselves) With a screen shot and box art. (we would have to add them ourselves) I think it would be a quicker and easier way (much less room) to manage oue nes roms and hacks.
Dish
Posts: 223/596
Well I got it somewhat ready:

Source
Binary

The Binary is a demo exe which has a very shoddy UI slapped together for the purpose of testing the emu. There's still some bugs I haven't fully worked out (DQ4 doesn't like to run), and my timing isn't quite perfect (Rad Racer messes up sometimes), so I'll have to touch up / rewrite the PPU. But for the most part, it's good... it just needs a little more work. I figured it's better to get something out here so that anyone interested can actually work with something that is test-able.

Be sure to read the readme(s) if you download. Lemme know if you're still interested / may be interested in the future ^^

HH (or anyone else): if you need this DLL-ifiied, I can do that for you... although I'm not sure if the function pointer thing I have going for the joypad input is very VB-friendly. I can do an alternate method if you need one.

Feedback welcome/appreciated.
HyperLamer
Posts: 2741/8210
Hmm, depending on how much of the work your emulator actually does, this could end up being one of those cool core-only ones that you can just add into anything, like those ones that can be used as Winamp/IRC plugins.

Originally posted by Disch
All the API stuff you do in VB (which I've seen you talk about in other posts) works exactly the same way in C... so I don't see why you'd have a harder time doing stuff in C than you would VB (in fact... I'd figure it'd be just the opposite).

Because 'all the API stuff' is all I can do. It doesn't have any of the built-in stuff or any real way to do debug output, and I have no idea how to create the window itself. (I know how to make them through code, but not how to put anything on them, and there must be some better way to do it.)

Don't bother setting it up specially for me, I can work with whatever. (I use Windows' API after all. )

Originally posted by Gavin
Originally posted by HyperHacker
I could do it in VB easily, including the whole pointer thing, but I don't know how you would work that into your program. (Compile it as a DLL, perhaps?)

Though really, if I'm going to be writing any emulators, I'd rather do it for GB. (I started one but couldn't get enough speed in VB and don't know enough C. )


HAHAHA, i assume your joking. otherwise you're just an asshole.

Care to explain?
Smallhacker
Posts: 1176/2273
If you made it in Blitz Basic 1.68 instead of C/C++, I would sign up.
Dish
Posts: 220/596
http://hypher.net/disch/InitialEmuLayout.txt

Just finished the preliminary layout. This is more or less how I'm planning to have it set up. I'm a little unsure about the function pointer deal for joypad data. Perhaps I could just have you call a function every frame to supply new joypad data? The of course would limit the number of joypad refreshes to one a frame... but that's probably all you'd need anyway.

The rest seems good to me. Still need to do sound stuff, but I'll worry about that later. Other options still need to be added... but for now this is good.

It's not carved in stone. If anyone out there who wants to jump on board has ideas to make it easier to use / better, I'm all ears. I have yet to do any actual work on it (i've written nothing apart from that txt file)... so it wouldn't be a bother at all ^^

Anyway... I'm seeing mostly a lot of "I'd like to, but...." except for HH's "I could, but...." ;P I'd be more than willing to help someone along if they're interested in learning (I could do the other end... I just don't want to - it's not fun for me... but I know how to do it... so I could answer Qs and stuff)

As far as the VB thing goes. The bottom line is: I don't really care. Yeah I'd prefer a single C/C++ executable... but a VB app and a C++ DLL is fine. And it's not like a person doing it in VB would stop someone else from doing it in C.

Anyway... I'm going to go ahead and get working on the emu. I'll probably have something in a few days (don't know how much I'll get done tonight )... maybe it'll be easier/more tempting for people to try out when it's actually there, ready to use rather than "I'm planning on doing this". I'll make it out like the above txt file.. so if anyone wants to start working on the other end for shits and giggles, that doc's got you covered.

And remember... no obligation. If you want to try it, go ahead... and if you get bored... don't hesitate to quit. This is a no pressure thing which is just for fun. You don't have to feel like there's a responsibility to get things done.
dan
Posts: 311/782
Coupling VB with C++ on this project would be like sticking a Ferrari engine in a Lada.

If I knew C++, I would definitely want to join this project, but all I know is bare bones console app programming.
sloat
Posts: 27/85
I would like to help, but I think I have too much on my plate already. I have like 2 or 3 projects at work and 2 personal projects which I barely feel like working on sometimes. Plus San Andreas, which is now cutting in to my sleeping time.

I almost started working on an NES emu a couple of weeks ago because I want to see if a multithreaded core with the cpu and ppu running in pseudo-parallel would perform better than traditional emulators. But I talked myself out of it for some reason.

Anyway, it sounds cool. If it's as good as NotSoFatso, I'll definitely check it out. And don't use VB.
Gavin
Posts: 367/799
Originally posted by HyperHacker
I could do it in VB easily, including the whole pointer thing, but I don't know how you would work that into your program. (Compile it as a DLL, perhaps?)

Though really, if I'm going to be writing any emulators, I'd rather do it for GB. (I started one but couldn't get enough speed in VB and don't know enough C. )


HAHAHA, i assume your joking. otherwise you're just an asshole.

Originally posted by Disch
Originally posted by HyperHacker
I could do it in VB easily, including the whole pointer thing, but I don't know how you would work that into your program. (Compile it as a DLL, perhaps?)


I suppose that could work. I'd prefer to avoid the wretch that is VB... but beggers can't be choosers. I haven't had the best of luck in my prior experiences getting DLLs running in VB (I attempted to make a DLL to play back NES sound for a music editor made in VB a long while back, but we couldn't get it working for some reason).


hey Disch dude, that DLL you gave me was actually entirely functional and technically correct by all means. It was just shitty VB standards that had prevented normal working code from functioning properly. I have since been able to make it work

All the same, I, who am a proficient VB coder, strongly discourage any and all VB collaberations on this project. I really don't need to list the reasons for not including any VB in this project, as you already know them yourself

I'm taking my first ever set of formal computer trainnig classes starting Jan. 3. C++ is among them, and I would, as soon as i get started, love to participate using a real language
This is a long thread. Click here to view it.
Acmlm's Board - I2 Archive - Programming - Who wants to make an NES emu with me?


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.016 seconds.