Advice

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Advice
by on (#26853)
Hi.

In about three weeks, I need to start my third year dissertation at Uni, and was considering writing a NES emulator.

I use Java for all programming and have little experience in any other language.

I know about hardware in a high level way (i.e. processors, RAM, Virtual Memory, page files) and have done a little assembly programming using the MIPS 2000 architecture.

I know very little about how the hardware works on a low level and think this may be a problem.

What I was wondering is whether it seems like a viable option for me to attempt this?

I would have until late April 2008 to complete the report and hand it in.

Thanks for any insights you can give me.

:)

by on (#26856)
Welcome Vegenad. Programming a NES emulator in Java can be done, your deadline is fine, and your general knowledge (even if it's not much) of hardware is a plus. Not knowing how the NES works on a low level doesn't matter, that's where you'll start: researching and lots of reading.

Quote:
What I was wondering is whether it seems like a viable option for me to attempt this?
Only you can answer that one. :P Since this is a school project, you'll probably need to focus on documentation. The NES has been documented thoroughly already, including emulation aspects, so your report might look like a mixed bag of known information and your own experience. I'm not sure if your teacher(s) would be ok with that. You could instead try a different (not done before) approach at NES emulation.

by on (#26891)
i think your project is doable. i would suggest using C or C++ (i prefer C) and sdl. the mips background will help with the cpu core emulation.

you say you know very little about the hardware, that might give you some work with the ppu (graphics).

there is plenty of info and help here. and if its open source some of us (me) could try it on our own, provided a makefile... :-D

i say go for it

matt

by on (#26899)
mattmatteh wrote:
i think your project is doable. i would suggest using C or C++ (i prefer C) and sdl.

If the goal is something that runs as a stand-alone application, C or C++ and SDL are just fine. But deployment with zero end-user effort is one of the big pluses of the Java platform, as a Java applet can run as a control on a web page. A program written in C++ can't do this unless you use the pricey ActiveX platform.
Thanks!
by on (#26900)
Hi.

Thanks for the advice everyone.

I think there's a very good chance that i'm going to be going with this so expect many stupid questions to pop up on the boards in the near future ;).

Again, cheers for the help.

:)

by on (#26901)
tepples wrote:
one of the big pluses of the Java platform


/me shudders at the thought of making an emu without the aid of pointers.

by on (#26903)
"deployment with zero end-user effort is one of the big pluses of the Java platform"

uhh no. java is a PITA. infact i dont think i have it here. any app wirtten in java is java dependent. i think i tried one of the tile apps on nesdev main page several times on 2 different platforms, always gave me an error.

matt

by on (#26908)
Disch wrote:
tepples wrote:
one of the big pluses of the Java platform


/me shudders at the thought of making an emu without the aid of pointers.


its not so bad. i tried this awhile back and had a Cartridge class that held the rom image in arrays. it had accessor methods that returned references to the needed arrays. this reference was then assigned to a variable in the CPU core (same for chr and the PPU core). its been awhile so im kinda grey on exactly how i had it setup. the emu never progressed very far past NROM and the discrete logic mappers, so i don't know what kinda performance hit you'll take when you toss more complex mappers and sound into the mix. i favored clean, organized code over speed when i started writing it.

by on (#26915)
Quote:
shudders at the thought of making an emu without the aid of pointers.

Yes, having gotten my feet wet in Java recently by writing some CPU and sound emulators, I can say that the lack of iterators (pointers) means a lot of useful techniques are unavailable. It's like being forced to keep the training wheels on your bike for all your life.