Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Actually, all motion does not stop, all particles just collapse to lowest possible energy state.
And due to Heisenberg uncertainity principle, that energy state does not have zero energy. So there is still motion.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Basically, publishing 1916M hit the publication bug and the attempts to repair messed up the database.
While hitting publication bug would not ordinarily cause publication number to be skipped (at least 3 such publications have been successfully fixed), Grunt thought a good way to fixing it would be to unpublish the movie and then republish.
Unfortunately, doing this got the site database into some weird state where the entry for 1916M both existed (attempts to add it were rejected as duplicate) and didn't exist (attempts to look it up returned row not found) at the same time.
Thus, the movie was republished as 1917M and 1916M was left as a gap.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I interpreted the statement about conversion differently:
N64Bot (or Droid64) can't directly read .m64s, so SoulCal apparently took the .m64 file and converted it to whatever format N64Bot/Droid64 reads (most likely raw binary dump to be sent to N64 according to clocking).
There is only one possible result for such conversion for each .m64.
Sometimes extra frames are inserted to fix sync problems (sometimes that helps) but it doesn't sound SoulCal needed to do that here.
Due to nature of .m64 format, what wasn't validated here is correctness of lag on Mupen64.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Oops, the torrents used incorrect webseed type (httpseeds as opposed to url-list). I edited those files by hand (hex editor!) but didn't remember to rearrange the fields.
I'll edit those torrents again. Okay, done (and updated the torrent files on site)
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Actually, one could optimize it (don't know how much) by not polling for timers every instruction, but only for known timer events:
The timer would be run on:
* Ucode block abort/exit
* Before waiting (HALT)
* After there would be known timer event.
The cached next event would have to be updated after:
* Ucode block entry
* After any operation that can execute timer events (including HALT and polling for timers).
The only thing that can unpredictably add timer events in the middle of ucode block are input events, and internally those are added by timer events, in order to guarantee that the sequence is repeatable (furthermore, there is never a long gap between two timer events, since there's always activity going on).
If you want to deal with some real black magic code: The JIT CPU core from original JPC, that should be much faster, but unfortunately making it work is far from trivial (I tried to make it work today, got lots of cryptic runtime errors).
Here is rough listing of things that have been done to the CPU core:
- CodeBlockManager has dummy methods to save/load it:
* void dumpSRPartial(SRDumper output)
* CodeBlockManager(SRLoader input)
* This class implements interface SRDumpable.
- New ucode op: INSTRUCTION_START.
* This ucode is emitted as first ucode op of every instruction (by both x86 to ucode compilers (one for real and one for protected mode).
* It advances the clock (if HALT is not in progress, as otherwise halt being aborted would advance clock twice), checks for self-modification of current block (aborting the block if it finds one if certain CPU flag is set).
- FPU handling is split to FPU class itself.
- Modifications to HALT in protected mode to cut down message spam from some games (those call HALT a lot from CPL != 0, which would normally trigger a message).
There are two new processor exceptions, neither of which is to be passed to the quest: TRACESTOP and SELFMODIFY
TRACESTOP is raised by INSTRUCTION_START if cpu.eflagsMachineHalt is set. This causes block to abort, with cpu.eflagsLastAborted being set and CPU instruction counter backing one place.
SELFMODIFY is actually handled the same way as TRACESTOP by the CPU core. It is raised by INSTRUCTION_START if current ucode block has been modified.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I have never really used Visual Boy Advance, but I think it goes this way:
* Before exiting the emulator, save a state
* Exit the emulator
* Start the emulator again
* Load the same ROM
* Load the save state you made.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I did C++ version of this program (All ISO C++11 except for use of expat):
http://www.elisanet.fi/ilari_l/NHMLFixup2-v2.zip
It lacks audio delay feature (omitted because that feature was a bad idea) but otherwise has all the features of NHMLFixup v10 (and more).
It hasn't been tested as well as the original NHMLFixup, so it is probably still buggy.
Command line syntax is a bit different
Syntax: NHMLFixup2 [<options>...] <nhml> <nhml>
-s / --tvaspect : Use DAR of 4:3
-w / --widescreen : Use DAR of 16:9
-d <x>:<y> / --dar=<x>:<y> : Use DAR of x:y
-r <x>:<y> / --resolution=<x>:<y> : Use resolution x:y for AR purposes
-a <x>[/<y>] / --assume-fps=<x>[/<y>] : Use fps of <x>/<y>
-t <file> / --timecodes=<file> : Use <file> for timecodes.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Run it from command prompt so any possible error message will stay on screen long enough to copy (instead of just disappearing immediately)
Also if you are just double-clicking it on explorer... That won't work because that program is command line based and needs arguments to tell it what it is supposed to do.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
You get some error about dedup.dll not being found or somesuch? As far as I know, that is usually caused by not having the libraries dedup.dll itself requires.
If hd is true, these two are precisely the same thing (this can be seen by simplifying the code with assumption that hd = true.)
When it comes to AVISynth script, the resolution computation is different for handhelds, otherwise there is no difference.
Hypothetical handheld with 256x224 resolution would give 1536x1344 HD resolution, where non-handheld of the same resolution (NTSC (S)NES) gives 3584x2688.
This is the scaling/AR precorrection code. From looks of it, it uses the older method for HD.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
That is internal AVISynth architecture limitation. The architecture requires streams to be seekable, which necessitates two passes (first to get what frames are "identical" and second to actually drop the frames).
Actually, with modern encoding methods (especially for N64) one needs three passes (both 2nd and 3rd are done with 'pass=2'), because x264 requires complete timecode file right at the start (or at least used to).
Dedicated dedup filters (like dedup.c) can do this stuff in one or two passes (vs 2 or 3 required by AVISynth).
Only, for downloadable HD, which I think isn't actually used (dedup is hostile to flash and to streaming sites). For normal downloadables (which are currently the only thing using dedup) the first pases are done with very fast settings (usually getting hundreds of fps) and only the last one is slow.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Nope, setblast is not needed. That tool just edits autoexec.bat, but the command it stuffs there can just be executed manually.
On DOS prompt before starting the game, issue command: "SET BLASTER=A220 I5 D1 H5 T6" before running the got.exe.
No restart needed (even if the emulator is capable of recording system restart, system -> reset).
I experimented with the game a bit, and it seems that it depends on phase of the moon if it detects the sound card or not. Be careful and check that the game really detects the sound card (trying to set sounds to digitized could be useful check). Using / not using I/O delay is useful for perturbing stuff here.
Edit: I actually modified the emulator to print the I/O traffic with the sound card. The game seems to use nonstandard method for detecting Soundblaster.
Instead of resetting the card and checking like it should, it tries to detect the OPL chip on card, and that is notoriously hit-or-miss when I/O delay isn't emulated.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Those are rate rate control options (and indeed control the bitrate used), so I presume those are in 'rate control' part.
Don't know, because I have never seen what that tab actually contains.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
To get best possible quality, both dumping and encoding must be done right.
For dumping, you need to use codec that is:
* Lossless
* Has RGB or 4:4:4 ITU Rec.709 TV-range colorspace.
The usual ones are (in RGB mode):
* FFV1
* Camstudio codec (this is always RGB).
* Lagarith
* HuffYUV
Avoid h.264 / x264 for dumping because the colorspace that would have to be set (4:4:4 ITU.709 TV/non-full range) is pretty exotic and it might not be possible to set it to use that.
Then on encoding, set rate contol to qp 0 or crf 0, colorspace to ITU.709 TV range (4:2:0 because Youtube does not support 4:4:4). The rest of the settings don't matter for quality (only resulting file size and encoding time).
Sorry, I don't know to set this in ffdshow, as usually the encoding for HD is done using x264 command-line tool with avisynth.
Also, for best possible sound quality, use FLAC for encoding the sound.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I would say no, already because emulating that would lead to "multiple oscillators problem", which already renders perfectly accurate emulation impossible.
Worse yet, the second "oscillator" in this case is a motor, which are not exactly accurate with rotation speed.
Sure you could probably get it near correct (and some games may even rely on loading times being there).
The "multiple oscillators problem" is as follows:
If there is only single oscillator in synchronous digital system. Then it is possible to compute future states of the system from the current state and logic-level description of the system.
The oscillator may jitter, but speed of everything else will jitter with it, canceling out the effects of jitter to system state.
If there are OTOH multiple oscillators, those oscillators can jitter with respect to one another, and these may have effects that don't cancel out.
You can't simulate the jitter because jitter depends on all sorts of factors that aren't known (like noise from the power supply).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
After back and forth by PM, it looks like that crash is caused by command line syntax change in x264 / direct264.
Now, unfortunately r11.2 is too old to use the newer syntax. Now that I have proper cross-compiler available, I built new version of streamtools for Win32:
Streamtools r11.6 (rev A).
--output-x264 now assumes new syntax (use --output-x264o if you have very old x264 that uses the old one).
But, this version adds --output-cscd=<filename> . This is output to .avi using Camstudio Codec for video and PCM for audio. The files should be directly usable for:
* Youtube uploading
* Processing using AVISynth (you also need to install Camstudio codec for this).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Yup. It is DOS command prompt (and other DOS) stuff. But not everyone has used computers long enough to have used that stuff (or just has used it so long ago they don't remember it anymore).
Hourglass? What that has to do with this? And the answer is no.
And if you are asking what emulator JPC-RR is based on, that's JPC.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
You seem to skip config.sys (F5). Use F8 (confirm each command) and you can run config.sys but skip autoexec.bat. This configuration has much more memory.
Image track count? Should be left at default of 16 unless that is too small (and it obviously isn't given you managed to successfully import the image).
That game has rather nasty tendency of not detecting the sound card (if it shows it found soundblaster in the first screen, then it should work). I/O delay might help (probably just preturbs the timings).
Oh, the hardware FPU has problems with that game (causes graphical glitches). Disabling the FPU (JPC-RR versions earlier than 11.5 also need NO_FPU hack to avoid Wolf3D from crashing on startup) fixes the graphics.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
The startup command is game-specific (look for files with extension .com, .exe or .bat, it is one of those without the extension). Without knowing what game it is, impossible to say.
Well, the idea is to do the command prompt using the virtual one and then have accelerators for often-used keys (see the 'extra' menu, datafiles/Extramenu and Wiki: EmulatorResources/JPC/KeyNumbers)
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Nope. Since the system boots from the first FDD, the default drive is A:, so the first command prompt will be 'A:\>' (at root directory of drive A:).
Typical next step (keyboard is buffered, so the input has already been entered when the prompt appears) is to switch to first hard drive (command is 'c:') and then start the game (command varies).
Steps some games additionally require:
* Running setup program (usually 'setup')
* Setting BLASTER variable (SET BLASTER=A220 I5 D1 H5 T6).
* Loading DPMI extender (since HXDPMI is the only known compatible extender).
Here's a screenshot from my Alien Carnage run (the A:\> prompt can be seen):