Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
PCSX2 (PS2 emulator) isn't the same as PCSX (PSX emulator).
PCSX2-rr is old and never actually worked properly.
And due to changes in PCSX2, making a rerecording version based on modern PCSX2 version would be very difficult. :-/
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Disable hardware acceleration and set video codec to Camstudio Codec.
My guess is that either hardware acceleration is screwing with the capture or you have some lossy codec with bad settings in use (most probably the latter).
In contrast, Camstudio codec is lossless. It does not degrade the video quality at all.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
FCEUX has built-in video/audio (a.k.a. AVI) capture. Use that, no need to use camstudio (the screen capture).
Additionally, the quality will be better as FCEUX will slow down to capture every frame instead of dropping frames if your computer can't keep up.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
You mean camstudio the screen capture software or FCEUX using the camstudio codec?
Those two are not the same (even if camstudio codec is part of camstudio the screen capture software).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Unsupported sound codec or dumping sound to AVI is disabled (I have never seen the dialog, so I can't say)?
The usual sound codec to use is 'uncompressed' or 'PCM'.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Load a savestate that is at the end of the video and switch to read-write mode (you could also play back the movie until you reach desired point, savestate, loadstate and switch to read-write mode).
That's how it works in every rerecording emulator.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
As for turning FM2 into AVI, use the emulator video dumping (if you use video codec like Camstudio, you might be able to directly upload the video into youtube).
Also, TAS shouldn't be in multiple parts. One can easily continue recording (resulting one movie) where one left off if one knows how.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Wiki: EncodingGuide
The idea is to use the emulator video dumping to dump the video / audio of the run at the best possible quality and then compress that using lossy codecs.
Some useful codecs for dumping:
* Camstudio (Video)
* Lagarith (Video)
* Camtasia (Video)
* FFV1 (Video)
* ZMBV (Video)
* Uncompressed (a.k.a. PCM) (Audio)
Some useful encoders for encoding:
* x264 (h.264) (Video)
* Aotuv (Vorbis) (Audio)
* NeroAACEnc (AAC) (Audio)
Of course, for submitted TASes, encoders are there for doing just that (but it saves effort if the author can do it).
But the game you mentioned (SNES Mega Man X) has AFAIK quite high-quality runs, so it doesn't sound like good choice for first run for submission (of course, using it to learn TASing is fine).
Edit: Apparently most those runs are quite out of date (missing latest tricks). So if you think you can beat those, go for it.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I checked, it doesn't look like it does anything except cause the site to compose invalid SQL syntax (with couple extra warnings from trying to pass an array as a string).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I don't remember if the shell likes specifying two temporary environment variables at once...
And also scons... I think it ignores any paths you specify (unless the script specifies that those should be respected)...
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I notice the list list of libraries doesn't include zlib. Maybe macports doesn't install the dev version unless you actually install it?
Also, was it compiler error (not finding some include) or linker error (not finding the library)?
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
As to why RAM addresses are important:
The game may not show something accurately enough:
Example 1: the gauge on screen might have 10 steps, even if game internally keeps track of 30,000. Good luck finishing with 1 unit remaining (which might very well be the fastest way) if you don't have the more accurate view.
Example 2: Less than one pixel position differences can affect things greatly (e.g. can make or break some almost impossible jump). But such differences won't show up on screen by definition, since 1 pixel is the smallest displayable amount.
Even if things are shown, numbers might be easier to read/understand:
Example 1: Character normally runs 6 pixels per frame, but slows to 5 pixels per frame on slopes upward. This is somewhat difficult to notice, but blatantly obvious if one is watching how character position is changing.
Something important is not shown at all:
Example 1: You are shooting at a boss. Is it really taking damage or not (the boss might be shown taking damage even if it isn't).
Example 2: Does the randomness in the next segment differ from what I have already seen, or is it the same? Good "randomness" may very well be much faster than bad one.
Example 3: Car speed oscillates between some values, but there is a trick that allows freezing that oscillation to the fastest value. This might very well save lots of time.
In summary, watching the values of RAM addresses can make it much easier to compare your current performance to past ones (is it better or worse?) and make it much easier to make a good run as you don't have to guess as much.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Deleting private marker needs torrent replace, it is not doable as torrent edit, like adding additional trackers or webseeds.
The reason is that the private marker is authenticated with torrent hash, which can't be modified without completely replacing the torrent. In contrast, trackers or webseeds are not authenticated, so those can be freely rewritten.
The old and new torrent will not be compatible with each other (but if one has file from old torrent, the new torrent process will immediately jump to 100%, because only target file contents matter there).
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
The 0x after 'C' means hexadecimal constant. But if it is an address, hexadecimal is often the easiest.
When you add a memory watch, it prompts for a name. You can name it as 'HP', then it gets shown as 'M[HP] <value>'.
And actually, memory watch expressions can be much more complicated, like:
C0x007e0876zwC0x007e002azw-
Which is the difference between signed word values at 0x7e002a and C0x7e0876.
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
C0x7E33DEzB
C...z: Push constant
B: Pop address, push contents of unsigned byte.
b: Pop address, push contents of signed byte.
W: Pop address, push contents of unsigned word.
w: Pop address, push contents of signed word.
Something like this should work:
on_paint = function()
gui.right_gap(160);
hp = memory.readbyte(0x7E33DE)
gui.text(512, 0, "HP: "..hp)
end
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
I tested, it seems to work (I especially checked that music works, as most well-known incompatibilities are associated with that).
Oh, the patch is headered, so setting apply offset to -512 (yes, negative) might be in order (if one uses lsnes internal ROM patcher)...
Emulator Coder, Experienced Forum User, Published Author, Skilled player
(1142)
Joined: 5/1/2010
Posts: 1217
Hourglass? But if the game does anything more exotic stuff, it is probably not going to work.
More exotic stuff refers to what APIs it calls. If it is some simple SDL game, it is very likely to work. But if ti calls all sorts of obscure APIs, not so much.