Posts for blip

1 2
5 6 7
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Features: - 60 fps - Accurate playback speed - Mutable sound (set BufferSize to 0 in the .ini) - Selectable frameskip - Sound in sync, despite the audio sampling rate or frameskip - No CPU spike/lockup - 240 scanlines Misfeatures: - Auto-frameskip disabled
Bisqwit wrote:
Is the frameskip now to be controlled using the "frame skip" input or the "occupation" control? What is the difference?
"Occupation" is just the term Famtasia uses when it writes the frameskip value to its .ini file. They're interchangeable. If you think this version is working well, maybe you could post an updated .zip file and let people have a crack at it.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
blip wrote:
Bisqwit wrote:
blip wrote:
this version is hardcoded to run at 1 (60fps).
Oh. That's too bad - the frame skip feature is useful when you want to conserve cpu power (on a slow laptop or when sampling at 30 fps).
Well, I *could* argue that you can just run the un-patched Famtasia when you want 20 fps. But I think I'd rather fix it. I'll have a look...
Much to my amazement, this appears to work:
		{ 0x00200,    1, "\x48" },
		{ 0x27c59,    5, "\xe9\x63\x03\x00\x00" },
		{ 0x1975a,    1, "\x00" },
		{ 0x196ff,    8, "\x82\x06\x00\x00\xf7\xea\xeb\x15" },
		{ 0x27d44,    2, "\xeb\x03" },
		{ 0x27fbc,0x11a, "\
\xe9\xcb\x01\x00\x00\xa0\x84\xe5\x46\x00\x84\xc0\x74\x08\x31\xdb\
\x89\x1d\x78\x7a\x46\x00\x8a\x25\xd0\x89\x44\x00\x84\xe4\x0f\x85\
\xd5\x01\x00\x00\x84\xc0\x0f\x84\x7e\xfc\xff\xff\x52\xa1\xd4\xdc\
\x46\x00\x3b\x05\x38\x3b\x47\x00\x74\x20\x31\xd2\x89\x15\x34\x3b\
\x47\x00\x89\x15\x40\x3b\x47\x00\x89\x15\x44\x3b\x47\x00\xa3\x38\
\x3b\x47\x00\xff\xd6\xa3\x3c\x3b\x47\x00\x8b\x1d\xd4\xdc\x46\x00\
\xb8\x83\x06\x00\x00\xf7\x2d\xd8\xdc\x46\x00\xf7\xf3\x85\xd2\x74\
\x13\x03\x15\x34\x3b\x47\x00\x39\xda\x7c\x03\x40\x29\xda\x89\x15\
\x34\x3b\x47\x00\xa3\x98\xda\x46\x00\xa3\x14\x7c\x46\x00\x50\x03\
\x05\x3c\x3b\x47\x00\xa3\x3c\x3b\x47\x00\x50\xff\xd6\x89\xc2\x58\
\x29\xd0\x7f\x05\xb8\x01\x00\x00\x00\x6a\x00\x6a\x00\x68\x20\x88\
\x42\x00\x6a\x00\x50\xff\x15\xbc\x12\x44\x00\xa3\x78\x7a\x46\x00\
\x58\xf7\x2d\x50\x23\x47\x00\xbb\xd0\x07\x00\x00\xf7\xf3\x85\xd2\
\x74\x13\x03\x15\x40\x3b\x47\x00\x39\xda\x7c\x03\x40\x29\xda\x89\
\x15\x40\x3b\x47\x00\x03\x05\x44\x3b\x47\x00\x99\xf7\x35\xd8\xdc\
\x46\x00\x89\x15\x44\x3b\x47\x00\x01\xc0\x8b\x15\xc0\x22\x47\x00\
\x39\xd0\x7e\x02\x89\xd0\xa3\xb8\x0e\x47\x00\x66\xc7\x05\x40\x23\
\x47\x00\x00\x00\x5a\xe9\x90\xfb\xff\xff" },
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Bisqwit wrote:
blip wrote:
this version is hardcoded to run at 1 (60fps).
Oh. That's too bad - the frame skip feature is useful when you want to conserve cpu power (on a slow laptop or when sampling at 30 fps).
Well, I *could* argue that you can just run the un-patched Famtasia when you want 20 fps. But I think I'd rather fix it. I'll have a look...
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
New patch. Setting buffer size to 0 will now disable sound. I found out while testing this that this patch will only run at frameskip 1. Running at any other frameskip screws up the sound, so this version is hardcoded to run at 1 (60fps). I found another minor error in the C code for the patch so I'll just re-post the whole thing.
		/* 60 fps patch B (fixed) */
		{ 0x00200,    1, "\x44" },
		{ 0x27c59,    5, "\xe9\x63\x03\x00\x00" },
		{ 0x1975a,    1, "\x00" },
		{ 0x196ff,    8, "\x82\x06\x00\x00\xf7\xea\xeb\x15" },
		{ 0x27d44,    2, "\xeb\x03" },
		{ 0x27fb1,    2, "\xeb\x04" },
		{ 0x27fbc, 0xfc, "\
\xe9\xcb\x01\x00\x00\xa0\x84\xe5\x46\x00\x84\xc0\x74\x08\x31\xdb\
\x89\x1d\x78\x7a\x46\x00\x8a\x25\xd0\x89\x44\x00\x84\xe4\x0f\x85\
\xd5\x01\x00\x00\x84\xc0\x0f\x84\x7e\xfc\xff\xff\x52\xa1\xd4\xdc\
\x46\x00\x3b\x05\x38\x3b\x47\x00\x74\x1a\x31\xd2\x89\x15\x34\x3b\
\x47\x00\x89\x15\x40\x3b\x47\x00\xa3\x38\x3b\x47\x00\xff\xd6\xa3\
\x3c\x3b\x47\x00\x8b\x1d\xd4\xdc\x46\x00\xb8\x83\x06\x00\x00\x99\
\xf7\xf3\x85\xd2\x74\x13\x03\x15\x34\x3b\x47\x00\x39\xda\x7c\x03\
\x40\x29\xda\x89\x15\x34\x3b\x47\x00\xa3\x98\xda\x46\x00\xa3\x14\
\x7c\x46\x00\x50\x03\x05\x3c\x3b\x47\x00\xa3\x3c\x3b\x47\x00\x50\
\xff\xd6\x89\xc2\x58\x29\xd0\x7f\x05\xb8\x01\x00\x00\x00\x6a\x00\
\x6a\x00\x68\x20\x88\x42\x00\x6a\x00\x50\xff\x15\xbc\x12\x44\x00\
\xa3\x78\x7a\x46\x00\x58\xf7\x2d\x50\x23\x47\x00\xbb\xd0\x07\x00\
\x00\xf7\xf3\x85\xd2\x74\x13\x03\x15\x40\x3b\x47\x00\x39\xda\x7c\
\x03\x40\x29\xda\x89\x15\x40\x3b\x47\x00\x01\xc0\x8b\x15\xc0\x22\
\x47\x00\x39\xd0\x7e\x02\x89\xd0\xa3\xb8\x0e\x47\x00\x66\xc7\x05\
\x40\x23\x47\x00\x00\x00\x5a\xe9\xae\xfb\xff\xff" },
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Bisqwit wrote:
Ps: In this patch, it seems to be no longer possible to disable audio by putting "0" as buffer size in ini file.
Ah, thanks for pointing that out. It'll probably be easy to fix. Glad to have some good news :) Edit: lol. I just noticed my forum title.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Bisqwit wrote:
Blip: No $C3 at $30010 this time?
No. The newest patch should fix the problem that this was trying to fix.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
ZtanZ wrote:
holy shit blip.. are you some kind of serious hacker o_O
Let's wait and see if it works first. ^_^
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Arc wrote:
Why are these different than the others? Can anyone with Windows watch them without problems? (I cannot.)
I use the VLC media player to play back XViD on Windows. I haven't yet found anything that VLC *can't* play back on Windows. Open Source, too.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Well, I finally managed to fix the sound glitch in the new 60 fps patch. Bisqwit, please test this new version on your machine. I think I fixed the problem you were experiencing.
		/* 60 fps patch B (fixed) */
		{ 0x00200,    1, "\x44" },
		{ 0x27c59,    5, "\xe9\x63\x03\x00\x00" },
		{ 0x1975a,    1, "\x00" },
		{ 0x196ff,    8, "\x82\x06\x00\x00\xf7\xea\xeb\x15" },
		{ 0x27d44,    5, "\xeb\x03" },
		{ 0x27fbc, 0xf5, "\
\xe9\xcb\x01\x00\x00\xa0\x84\xe5\x46\x00\x84\xc0\x74\x08\x31\xdb\
\x89\x1d\x78\x7a\x46\x00\x8a\x25\xd0\x89\x44\x00\x84\xe4\x0f\x85\
\xd5\x01\x00\x00\x84\xc0\x0f\x84\x7e\xfc\xff\xff\x52\xa1\xd4\xdc\
\x46\x00\x3b\x05\x38\x3b\x47\x00\x74\x1a\x31\xd2\x89\x15\x34\x3b\
\x47\x00\x89\x15\x40\x3b\x47\x00\xa3\x38\x3b\x47\x00\xff\xd6\xa3\
\x3c\x3b\x47\x00\x8b\x1d\xd4\xdc\x46\x00\xb8\x83\x06\x00\x00\xf7\
\x2d\xd8\xdc\x46\x00\xf7\xf3\x85\xd2\x74\x13\x03\x15\x34\x3b\x47\
\x00\x39\xda\x7c\x03\x40\x29\xda\x89\x15\x34\x3b\x47\x00\xa3\x98\
\xda\x46\x00\xa3\x14\x7c\x46\x00\x50\x03\x05\x3c\x3b\x47\x00\xa3\
\x3c\x3b\x47\x00\x50\xff\xd6\x89\xc2\x58\x29\xd0\x7f\x05\xb8\x01\
\x00\x00\x00\x6a\x00\x6a\x00\x68\x20\x88\x42\x00\x6a\x00\x50\xff\
\x15\xbc\x12\x44\x00\xa3\x78\x7a\x46\x00\x58\xf7\x2d\x50\x23\x47\
\x00\xbb\xd0\x07\x00\x00\xf7\xf3\x85\xd2\x74\x13\x03\x15\x40\x3b\
\x47\x00\x39\xda\x7c\x03\x40\x29\xda\x89\x15\x40\x3b\x47\x00\x01\
\xc0\xa3\xb8\x0e\x47\x00\x66\xc7\x05\x40\x23\x47\x00\x00\x00\x5a\
\xe9\xb5\xfb\xff\xff" },
finalfighter wrote:
tips Windows Occupation slider enabled $5268f:50
Thanks for the tip, finalfighter, but it didnt work for me. :( The slider remained broken. I noticed that you can change the frameskip from the "Speed Configuration" dialog box, just by typing a number next to the "Refresh" option, so you don't have to hand-edit the .ini file after all. Still, I don't really like including "instructions" with my releases; I'd like it to run at 60fps by default. What do others think of this?
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Well, the choice seems to be between inaccurate playback but accruate sound, or accurate playback and inaccurate sound (presuming famtasia would be nice enough to behave the same on everybody's machine :P ). There are good reasons why each version acts like it does. Anyhow, if you want to remove the CPU spike from the original 60fps patch, this sinlge byte fix should hopefully do the trick: $30010 : c3
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Bisqwit wrote:
blip wrote:
Is there a way I can get your copy?
https://files.tasvideos.org/bisqwit/blip.zip Includes the exe and ini files.
They're the same of course. I was afraid of that. It's a shot in the dark, but you could try applying these changes: $272e2 : e9 8e 04 00 00 Otherwise, I don't know what to say. :(
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Bisqwit wrote:
Sorry to say but it doesn't work properly. After a while, it started going like an inchworm. Normal speed, lag, normal speed, lag, normal speed, lag...
Maybe I should check your version against mine. Is there a way I can get your copy?
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
I've just completed the new 60fps patch. The good news: . fixes the playback rate at 60fps. I tested this against sleepzteam's zelda run and linnom's batman run, timing them at 26:55 and 10:17 respectively, which I think is correct. . fixes the cpu lock-up (yay!) . fixes the screen size miscalculation for 3x magnification Now for the bad news: . causes audbible "popping" in the audio Unfortunately, the sound "popping" glitch might be difficult to fix even if I did have the source code, so I might not manage to fix this for a while. Now for the patch. You should apply this to an unmodified FAMTASIA.EXE.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	struct {
		unsigned long offset;
		int length;
		char* data;
	} patch[]= {
		/* 60 fps patch */
		{ 0x00200,    1, "\x40" },
		{ 0x27c59,    5, "\xe9\x63\x03\x00\x00" },
		{ 0x1975a,    1, "\x00" },
		{ 0x196ff,    8, "\x82\x06\x00\x00\xf7\xea\xeb\x15" },
		{ 0x27fbc, 0xd0, "\
\xe9\xcb\x01\x00\x00\xa0\x84\xe5\x46\x00\x84\xc0\x74\x08\x31\xdb\
\x89\x1d\x78\x7a\x46\x00\x8a\x25\xd0\x89\x44\x00\x84\xe4\x0f\x85\
\xd5\x01\x00\x00\x84\xc0\x0f\x84\x7e\xfc\xff\xff\x52\xa1\xd4\xdc\
\x46\x00\x3b\x05\x38\x3b\x47\x00\x74\x14\x31\xd2\x89\x15\x34\x3b\
\x47\x00\xa3\x38\x3b\x47\x00\xff\xd6\xa3\x3c\x3b\x47\x00\x8b\x1d\
\xd4\xdc\x46\x00\xb8\x83\x06\x00\x00\xf7\x2d\xd8\xdc\x46\x00\xf7\
\xf3\x85\xd2\x74\x13\x03\x15\x34\x3b\x47\x00\x39\xda\x7c\x03\x40\
\x29\xda\x89\x15\x34\x3b\x47\x00\x03\x05\x3c\x3b\x47\x00\xa3\x3c\
\x3b\x47\x00\x50\xff\xd6\x89\xc2\x58\x29\xd0\x7f\x05\xb8\x01\x00\
\x00\x00\xa3\x98\xda\x46\x00\xa3\x14\x7c\x46\x00\x6a\x00\x6a\x00\
\x68\x20\x88\x42\x00\x6a\x00\x50\xff\x15\xbc\x12\x44\x00\xa3\x78\
\x7a\x46\x00\xa1\x98\xda\x46\x00\xf7\x2d\x50\x23\x47\x00\xbb\xe8\
\x03\x00\x00\xf7\xf3\xa3\xb8\x0e\x47\x00\x5a\xe9\xda\xfb\xff\xff" },
		{ 0x30010,    1, "\xc3" },

		/* 240 scanlines patch */
		{ 0x1ff0d, 1, "\xf0" }, { 0x1f352, 1, "\xf0" }, { 0x1f2e6, 1, "\xf0" }, { 0x1f389, 1, "\xef" },
		{ 0x1f2f1, 1, "\xf0" }, { 0x1f34e, 1, "\x3d" }, { 0x1f2e2, 1, "\x3d" }, { 0x1ff31, 1, "\xe0" },
		{ 0x46920, 1, "\x10" }, { 0x1f5cd, 1, "\xf0" }, { 0x1f5d8, 1, "\x3d" }, { 0x1f617, 1, "\xf0" },
		{ 0x1f60c, 1, "\xf0" }, { 0x1f608, 1, "\x3d" }, { 0x1f1ad, 1, "\x3d" }, { 0x1f1b2, 1, "\x3c" },
		{ 0x1f6e0, 1, "\xf0" }, { 0x1f6dc, 1, "\x3d" }, { 0x1f71d, 1, "\xf0" }, { 0x1f460, 1, "\xf0" },
		{ 0x1f478, 1, "\xf0" }, { 0x2705d, 1, "\xd0" },

		{ 0, 0, 0 }
	};

    FILE *fp = fopen("FAMTASIA.EXE", "rb+");
    if(!fp) { perror("FAMTASIA.EXE"); return -1; }

	int i;
	for(i=0; patch[i].offset; ++i)
	{
		fseek(fp, patch[i].offset, SEEK_SET);
		fwrite(patch[i].data, 1, patch[i].length, fp);
	}

	return 0;
}
Edit: I fogrot to mention that this patch completely removes the auto-frame skip functionality from Famtasia. If you want 60fps, you'll have to manually set frame skip to 1 by hand-editing your famtasia.ini file. Look for the line "Occupation=3" and set it to 1. If people find this a nuisance I can easily hard-code the frame skip to be 1.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
feitclub wrote:
When I switch to Fullscreen, the picture disappears. All I get is a black screen and my mouse pointer. If I press Esc, I can see (part of) the menu bar. The sound continues, so i know the emulator is still emulating. But I can't see anything. Fullscreen works in regular Famtasia on my computer, for the record. And I still can't get 240 to work properly at any size.
I've never seen this behavior, so I'm not sure I can help. :( Any more info you could provide might be helpful. What happens when you run in windowed mode? Are you running win98 or xp?
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Bisqwit wrote:
Blip, I'm little in understanding, but to me it seems like in this patch you replaced this formula: (a/3) * 5000 / b with this: (a * 1766) / b Why did you use 1766 (0x6E6) anyway? 1666 (0x682) is nearer...
The formula is timer_interval = (1766 * frame_skip) / execution_speed I chose 1766 so that the emulator would set the timer every 17msec, instead of 16msec, based on the erroneus assumption that the minimum timer interval useable was 16msec. I've since found out that there's no restriction on the minimum timer interval in windows. Either constant used in the equation (1666 or 1766) gives roughly the same timing error at 60fps; 1766 runs slightly too slow and 1666 runs slightly too fast. The timer actually needs to be firing every 16.6667 msecs. I'm working on a new patch that reworks the timer code, to take into account the fractional part of the timer interval. The new patch should be much more accurate at 60fps. Also, I *think* the CPU spike is related to the messages that show up on the bottom of the screen, "movie stopped", etc. But I need to verify this.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
feitclub wrote:
In anyone else having problems running 60fps in Fullscreen? I am.
Can you give more info on what's going wrong? Is it freezing up? Is it not running? Is it running but not running at 60fps?
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Boco wrote:
Michael Fried wrote:
Blip, do you think you would be able to hack Famtasia in such a way that would let allow you to redo early parts of a video without having to redo the whole thing?
That's impossible to do, just so you know.
Actually, I can think of a way to do it. You could embed save states in the movie file. I'd like to see it done just because it'd be a great tool for perfecting time attacks. But it arguably crosses the line to cheating since the movie files are no longer just controller input. It'd be an awful lot of work to hack into Famtasia. VirtuaNES would be more doable since they already have savestates in their movie files... but still not likely to happen I'm afraid. :/
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Recording at 60fps should be fine.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Sleepz wrote:
Now about the video time, I played both the FMV and the AVI side by side, and the AVI is playing significantly slower than the FMV file. Right now, I'm not 100% sure which one is giving the correct completion time. Does anyone know whats going on here?
I really should make an important point here. The 60 fps hack will NOT give accurate time results. This is because Famtasia uses a really innacurate method for controlling time. At 60fps there's an average error of about 4%, or roughly 24 seconds every 10 minutes. If you want an accurate guage of the playing time, you MUST play back at 20fps (20fps evenly divides into a second, avoiding rounding errors). I sincerely apologize but I only just now realized this. I dont know if you've been using the 60 fps version for playback, but that might account for the error.
Post subject: DVD player
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
New patch. Supersedes the previous 240-scanlines patch.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
	struct
	{
		unsigned long offset;
		unsigned char before;
		unsigned char after;
	} patch[]=
	{
		{ 0x1ff0d, 0xe0, 0xf0 }, { 0x1f352, 0xe0, 0xf0 }, { 0x1f2e6, 0xe0, 0xf0 },
		{ 0x1f389, 0xe0, 0xef }, { 0x1f2f1, 0xe0, 0xf0 }, { 0x1f34e, 0x45, 0x3d },
		{ 0x1f2e2, 0x45, 0x3d }, { 0x1ff31, 0xc0, 0xe0 }, { 0x46920, 0x20, 0x10 },
		{ 0x1f5cd, 0xe0, 0xf0 }, { 0x1f5d8, 0x45, 0x3d }, { 0x1f617, 0xe0, 0xf0 },
		{ 0x1f60c, 0xe0, 0xf0 }, { 0x1f608, 0x45, 0x3d }, { 0x1f1ad, 0x45, 0x3d },
		{ 0x1f1b2, 0x38, 0x3c }, { 0x1f6e0, 0xe0, 0xf0 }, { 0x1f6dc, 0x45, 0x3d },
		{ 0x1f71d, 0xe0, 0xf0 }, { 0x1f460, 0xe0, 0xf0 }, { 0x1f478, 0xe0, 0xf0 },
		{ 0,0,0 },
	};

	FILE *fp = fopen("FAMTASIA.EXE", "rb+");
	if(!fp) { perror("FAMTASIA.EXE"); return -1; }

	int i;
	for(i=0; patch[i].offset; ++i)
	{
		fseek(fp, patch[i].offset, SEEK_SET);
		fwrite(&patch[i].after, 1, 1, fp);
	}

	return 0;
}
This adds fullscreen support. You might notice that the very top scanline has been cut off and an extra one placed at the bottom of the screen -- this is apparently a glitch in Famtasia's emulation. For some reason the x3 magnification is uneven -- not all the pixels are uniform in size -- but I'm not going to worry about it too much right now. :) I'm sorry that I released the previous version before fullscreen support was added. I dont know why it slipped my mind...
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
I just edited my post and updated the patch to fix a visual glitch. Sorry, I was probably a bit hasty... I'll look into fixing fullscreen next.
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Phil wrote:
Well it's for *nix is someone able to share the Famtasia patched version 2?
If you're feeling brave you can try reading the code for clues on what to do in the hex editor. For example, the line:
    fseek(fp, 0x1f352,SEEK_SET); fwrite("\xf0", 1,1, fp);
Means: "Set the byte at offset $1f352 to f0"
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
I just want to congratulate Sleepz and the team on a superb time attack video. It was hugely entertaining, and it was clear from watching it that a good amount of cleverness and trickery went into its creation. Bravo!
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
We're in luck. It turns out that Famtasia was emulating the full 240 scanlines; it simply wasn't displaying them. Thus, the patch was rather simple. You can apply this patch directly on top of the 60-fps patched version. It's possible that I've missed a few spots in the patch, since the rendering routines are very spread out and there are a lot of rendering options in Famtasia. I'd like people to let me know if they find a configuration that isn't showing the full 240 scanlines.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    FILE *fp = fopen("FAMTASIA.EXE", "rb+");
    if(!fp) { perror("FAMTASIA.EXE"); return -1; }
    fseek(fp, 0x1ff0d,SEEK_SET); fwrite("\xf0", 1,1, fp);
    fseek(fp, 0x1f352,SEEK_SET); fwrite("\xf0", 1,1, fp);
    fseek(fp, 0x1f2e6,SEEK_SET); fwrite("\xf0", 1,1, fp);
    fseek(fp, 0x1f389,SEEK_SET); fwrite("\xef", 1,1, fp);  /*fix*/
    fseek(fp, 0x1f2f1,SEEK_SET); fwrite("\xf0", 1,1, fp);
    fseek(fp, 0x1f34e,SEEK_SET); fwrite("\x3d", 1,1, fp);
    fseek(fp, 0x1f2e2,SEEK_SET); fwrite("\x3d", 1,1, fp);
    fseek(fp, 0x1ff31,SEEK_SET); fwrite("\xe0", 1,1, fp);  /*fix*/
    fseek(fp, 0x46920,SEEK_SET); fwrite("\x10", 1,1, fp);
    puts("done");
    fclose(fp);
    return 0;
}
Edit: Just noticed and fixed a small visual glitch
Experienced Forum User
Joined: 4/11/2004
Posts: 155
Location: Fairfax, VA, USA
Bladegash wrote:
I've uploaded the modified EXE file for anyone who can't work the hex editor.
Thanks for doing this. But there's a problem :(
Comparing FAMTASIA_patched.EXE and famtasia_bladegash.exe...
Compare error at OFFSET 28087
file1 = 1
file2 = 0
Compare error at OFFSET 28112
file1 = FA
file2 = 1
Compare error at OFFSET 28113
file1 = 1
file2 = 3
1 2
5 6 7