Something's wrong... or I believe so. They've added emulation rewind. Yes, the feature discussed HERE & implemented by a few emulators is now present in this official compilation.
Did they get the source code without permission to incorporate on their project? AFAIK, this Capcom project is not open source, so... What do you think about it?
Revenant wrote:
https://en.wikipedia.org/wiki/Backbone_Entertainment#Eclipse_Engine
It's an ancient idea that I never understand it. Well, let me change the question. Are the MegaMan ROMs included in the PC program?
I'm pretty sure that rewinding in games wasn't invented by NESDev people. I think that Prince of Persia: The Sands of Time, for example, predates the use of this feature in any emulator. This is a pretty generic mechanic really, like jumping or attacking, so I don't see it as something "copyrightable" that can be "stolen".
And the Prince of Persia people were inspired by a Donald Duck game that had rewinding.
Back to the original topic...
I was watching Frank Cifaldi's video about how his team did the port of Megaman legacy collection to modern C code. It's a port, decompiled from the ASM, but done as C code, and it still does writes to an emulated PPU and everything. But they can add new featues into the game in modern way, since they can edit the C code, and skip the emulated PPU.
Companies are scared of using a real emulator for some reason, and want a port instead so they can avoid legal risks.
Dwedit wrote:
Back to the original topic...
Wait, wasn't "rewinding" the original topic? The engine was mentioned in a reply...
My (hasty) reply was just to point out that the Digital Eclipse / Capcom game collections don't use third-party emulators. Dwedit elaborated on it nicely.
"A port"... as easy as 2+2=4. Yeah. I'd like an example of such thing in the community, one example of porting a NES game from ASM to C. The only idea was a NES C compiler + user interface. An ancient emulator named "PCNES" had an "ability" to be encapsulated with an single ROM to be "executable" in a PC, do you remember it?
About the rewind, I said it is/was an ancient idea, BUT the idea of applying it in NES emulators has been born here... OR do you really think that a 20-years-old guy from the Eclipse team had an idea (an insight) about "why not a rewind feature, like they did in Prince of Persia back in 80s"? No.
You do know who Frank Cifaldi is, right? He's a legend. He ran theredeye.net way back in the day (2002-2005), a rom release site for rare, obscure, and prototype games, complete with screenshots of 8-bit nudity. Then he ran lostlevels.org, a prototype rom release blog and discussion site which looks far more clean and professional, due to less foul language and no more nudity. Then he did a bunch of random writing jobs for gaming news sites.
He also originated the comment suggesting that "Nintendo sold you a ROM they downloaded from the internet", which went viral.
Dwedit wrote:
I was watching Frank Cifaldi's video about how his team did the port of Megaman legacy collection to modern C code. It's a port, decompiled from the ASM, but done as C code, and it still does writes to an emulated PPU and everything. But they can add new featues into the game in modern way, since they can edit the C code, and skip the emulated PPU.
Companies are scared of using a real emulator for some reason, and want a port instead so they can avoid legal risks.
That and for a period of several months years ago, Apple's App Store Review Guidelines required a port because Apple was trying to kill Adobe AIR. Apple wouldn't sign an app for distribution to the public for use on iOS devices unless its source code (that is, the preferred form for making modifications to the program) was in either Objective-C++ or JavaScript. If you want sources, I can dig them up.
But I agree that rewinding in general isn't proprietary to the emulation scene.
Dwedit wrote:
You do know who Frank Cifaldi is, right?
Nope.
Quote:
He's a legend.
Wow.
Quote:
He ran theredeye.net way back in the day (2002-2005), a rom release site for rare, obscure, and prototype games, complete with screenshots of 8-bit nudity. Then he ran lostlevels.org, a prototype rom release blog and discussion site which looks far more clean and professional, due to less foul language and no more nudity. Then he did a bunch of random writing jobs for gaming news sites.
He also originated the comment suggesting that "Nintendo sold you a ROM they downloaded from the internet", which went viral.
Fine. Now I'd like a
proof of concept - take a NES ROM and convert it to a PC-executable or C source code. As I said, it's an ancient concept that I never saw it.
Can't find any sources right now, but I remember an interview where the developers of Sonic CD for PC said they too used a tool to convert the original 68000 code into C, way back in '96.
The only nearest think I can remember is dynamic recompilation, used in Nintendo64 emulators as a "shiny" speed resource. Perhaps I'm not phrasing my thoughts correctly. Converting 6502 code to C isn't a common practice, but emulating the system. Do you remember the MegaMan Mania, for Gameboy Advance? It was cancelled due to the lack of the original source code? Well, no GBA to C technique that time, eh?
Zepper wrote:
Now I'd like a proof of concept - take a NES ROM and convert it to a PC-executable or C source code. As I said, it's an ancient concept that I never saw it.
There is
MULS, a transpiler-assisted port of
Super Mario Bros. to 68000 assembly language for use with a Sega Genesis. There is also a
C preprocessor macro pack for translating x86 assembly. And
Microchess ported from 6502 on KIM-1 to C.
Couldn't find anything about a tool, but
this interview contains the following bit:
Quote:
The amazing bit was how they translated the game from assembler to C, because the code was very funny -- when I read it on the screen (I don't have a copy) in the office in Tokyo, it was obvious that the C code was "emulating" the assembler code logic, rather than being a "fresh re-design".
Wasn't there also some talk about Hello Kitty World on the Famicom being, at least in part, automatically converted from Balloon Kid on the Game Boy, due to the strangeness of the 6502 in that game?
Well, it's pretty funny.
If you intend to convert a NES game to C, then to a x86 executable, it's no doubt you must emulate the hardware, otherwise you're blindfolded. An "engine"
is an emulator. The C source code isn't true code, but something within blocks of data to replicate the PPU mechanics (bankswitching, tables, maps and scrolling).
Rockman Complete Works (PS1) has the original ROM on it, but when you run the game, there are a couple of differences - mostly, the lack of slowdown and no sprite flickering (8 sprites limit).
Probably it uses an early prototype of such "engine", but still requiring the original ROM. At anyway, it's interesting.
Do you know if the NES Mini Classic use such engine, or all those games are, in fact, emulated?
tokumaru wrote:
Wasn't there also some talk about Hello Kitty World on the Famicom being, at least in part, automatically converted from Balloon Kid on the Game Boy, due to the strangeness of the 6502 in that game?
The way that some of the tiny game logic quirks carry over perfectly hints at something like this.
I feel this way about Pac-Man for Neo-Geo Pocket Color. It is the only home port that isn't emulated that follows the AI so well and has the little quirks (like turning pac-man as he stops).
tokumaru wrote:
Wasn't there also some talk about Hello Kitty World on the Famicom being, at least in part, automatically converted from Balloon Kid on the Game Boy, due to the strangeness of the 6502 in that game?
Yes, in this thread among others:
viewtopic.php?p=24994#p24994ccovell wrote:
On a related note, Hello Kitty World on the Famicom is a conversion of Balloon Fight GB on the Gameboy, and if it's not a totally automated conversion, it's at least pretty close IMO.
Making hacks for HKW was pretty tough, because for almost every variable in the game, the code does this:
load A with the variable from whatever RAM location
save it to $20-$2x in ZP
modify it in ZP
load it into A then save it back to whatever RAM location.
That always struck me as very Z-80-like.
Zepper wrote:
Rockman Complete Works (PS1) has the original ROM on it, but when you run the game, there are a couple of differences - mostly, the lack of slowdown and no sprite flickering (8 sprites limit).
Probably it uses an early prototype of such "engine", but still requiring the original ROM. At anyway, it's interesting.
It's probably easier to just stick the entire program rom in there instead of just extracting the bits that you need to read as data. the CHR rom is a given, of course.
Quote:
Do you know if the NES Mini Classic use such engine, or all those games are, in fact, emulated?
Emulated, since people have been able to hack it to play any game in the NES library.
tepples wrote:
Dwedit wrote:
Companies are scared of using a real emulator for some reason, and want a port instead so they can avoid legal risks.
That and for a period of several months years ago, Apple's App Store Review Guidelines required a port because Apple was trying to kill Adobe AIR. Apple wouldn't sign an app for distribution to the public for use on iOS devices unless its source code (that is, the preferred form for making modifications to the program) was in either Objective-C++ or JavaScript.
I found a citation for Apple's former restriction on interpreters:
Apple Eases Up on Restrictions on Interpreted Code in iPhone Developer Agreement, via
Slashdot
Sumez wrote:
Quote:
Do you know if the NES Mini Classic use such engine, or all those games are, in fact, emulated?
Emulated, since people have been able to hack it to play any game in the NES library.
…though the emulator only had limited mapper support.
Mappers 0, 1, 2, 3, 4, 5, 7, 9 is still quite a lot of games. (yes, it even supported MMC5...) And if that isn't enough, you throw Retroarch on the thing.
The only good game is DuckTales. Chip'n Dale wasn't fun, and I mean when I was 15 old. ^_^;; Talespin is the same.
Darkwing Duck... I got it as an hack (Mega Man 5) - you play as Mega Man. Later, I played the original game at all.
I love the Chip 'n Dale and Darkwing Duck NES games!
Zepper wrote:
I got it as an hack (Mega Man 5)
I remember that Megaman with a identity crisis!!
At least on the pirate hack I played at the begining of the stages and in the intoduction he screamed "I'm Darkwing Duck!"
I laughed out loud back in the day!!
tokumaru wrote:
I love the Chip 'n Dale
I liked Chip n' Dale too. Not that much, but was enough to make me finish the game.
I remember the last stage seemed atrocious to me back them.
I think I was 12 when I finished it... not sure though.
I need to revisit both them!!
Dwedit wrote:
Mappers 0, 1, 2, 3, 4, 5, 7, 9 is still quite a lot of games. (yes, it even supported MMC5...) And if that isn't enough, you throw Retroarch on the thing.
2039 by Bootgod's count. (9's a singleton, though.)
My philosophy BG trained me to attack easily-refutable statements such as "all" or "not any"…I recall hearing rumor that DWD uses a slightly-modded Megaman 5 engine. (The arrow probably led to this.)
FYI
http://decompiler.org/ZSNES had the "Q" key to rewind very early from memory.
Oziphantom wrote:
FYI
http://decompiler.org/ZSNES had the "Q" key to rewind very early from memory.
Funny...
this program expires 23rd June 2016. We have a problem
!
Well... back to the topic. What kind of operations would replace "the skinny on NES scrolling" logic? Plus, what about cycle counting present in APU and PPU? Do you believe in code suppression like the NES scrolling and PPU reads/writes at all? Graphics are converted into a suitable format, ok, much like new memory for the NES RAMs (main, sprites and pattern tables), but I wonder about the inner PPU operations to get the game working fine.
If you take a timeline, we have the Rockman Complete Works on Playstation 1 using an engine that improves the original game code (no slowdowns, for example), but the ROM is still there (graphics were ported though). Later, the Virtual Console bringing copies of the ROM images built-in with an emulator + save states (remember the iNES header issue?). Then, Mega Man 9 and 10 - I wonder if this is the starting point for an engine and C port of the NES games. At last, the MegaMan Collection and Disney AC bringing such engine - games were ported to C and compiled.
Would be kind of easy to build an engine that take the sound, artwork and stage design and spits an binary executable to the chosen platform.
I think this is what's happening if the games are not suffering of some of their original bugs.
The Megaman's games are a proof of this theory.
Also, more releases on this style would be just a matter of time, and maybe some licenses issues solving.
Don't the PS1's version of Chrono Trigger have the original SNES ROM on the disc?
The US version of Chrono Trigger has a Japanese rom sitting on there, it's not emulating the game