Ferazel's Wand
Moderators: Cat_7, Ronald P. Regensburg, ClockWise
Re: Ferazel's Wand
FerazelX, you try and communicating with Ben Spees? I might have another go, if you haven't already gone for it.
Re: Ferazel's Wand
You can go first.
BTW, I think the problem is a lack of an internal SCSI or ATI drive.
Also, anyone know of a good disassembler?
BTW, I think the problem is a lack of an internal SCSI or ATI drive.
Also, anyone know of a good disassembler?
Re: Ferazel's Wand
Anyone?
Re: Ferazel's Wand
Dunno, but I sent Ben a message, no reply yet.
Re: Ferazel's Wand
So, anyone want to figure it out for sure? :DThanks for writing. It is always heartwarming to hear that people are still interested in my old games. If I knew what to change in Ferazel to make it work in SheepShaver, I would! I obviously am not in a position to port it to any modern platform as the code is truly ancient (I started working on it it in 1999.) If someone can point me in the direction of a minor change to make, and if I can still get the code to compile on my old OS 9 machine, I could possibly make a new executable that might work.
Also, in case you are interested, I am currently doing iPhone development, and have two games up on the App Store, TxtFighter and Tiny Toots. I am very keen on doing a side scroller for iOS which would be a conceptual sequel to Ferazel, but of course for legal reasons can't be titled that. Hopefully I will be able to work on that soon and I think any Ferazel fans would be into it. I am truly grateful for everybody's support of the game.
-Ben
Re: Ferazel's Wand
You might want to suggest to him to run it in SheepShaver and see what happens. He must have the debugging tools available to see where things go wrong.
Best,
Cat_7
Best,
Cat_7
Re: Ferazel's Wand
Is there any already set up versions of SheepShaver that are legal to distribute, that I could send him?Cat_7 wrote:You might want to suggest to him to run it in SheepShaver and see what happens. He must have the debugging tools available to see where things go wrong.
Best,
Cat_7
- Ronald P. Regensburg
- Expert User
- Posts: 7830
- Joined: Thu Feb 09, 2006 10:24 pm
- Location: Amsterdam, Netherlands
Re: Ferazel's Wand
None. A ready set up SheepShaver contains a ROM file and installed system. Both cannot be distributed legally.Jon God wrote:Is there any already set up versions of SheepShaver that are legal to distribute, that I could send him?
But you can set up a SheepShaver VM yourself. SheepShaver VMs are portable. See for more information:
http://www.emaculation.com/forum/viewto ... ned#p30402
http://www.emaculation.com/forum/viewto ... al+machine
Re: Ferazel's Wand
Any updates?
Also, I am still looking for a good disassembler.
Also, I am still looking for a good disassembler.
Re: Ferazel's Wand
Replied to Ben, waiting reply.
Re: Ferazel's Wand
Any reply yet?
Re: Ferazel's Wand
Nope, though it took a few days last time too, though.
Re: Ferazel's Wand
Reply yet?
Re: Ferazel's Wand
No, I will post here as soon as I hear anything, trust me.
Re: Ferazel's Wand
Nothing yet?
Re: Ferazel's Wand
Nope, though I read that he is on a trip somewhere, so it might be better to keep trying to figure things out until I can get a reply.
Re: Ferazel's Wand
Having a good disassembler or even a decompiler would help.
Re: Ferazel's Wand
Try asking at the macintosh garden perhaps, someone there might be able to point you in the right direction.
Re: Ferazel's Wand
Still nothing?
Also, I keep forgetting to mention that Ferazel's Wand uses 53k of memory before it crashes. This was discovered using RAM Charger.
Also, I keep forgetting to mention that Ferazel's Wand uses 53k of memory before it crashes. This was discovered using RAM Charger.
-
- Forum All-Star
- Posts: 1726
- Joined: Tue Oct 14, 2008 12:12 am
Re: Ferazel's Wand
Content removed by poster.
Last edited by emendelson on Mon Mar 19, 2012 10:38 pm, edited 1 time in total.
-
- Space Cadet
- Posts: 1
- Joined: Mon Mar 19, 2012 7:01 am
Re: Ferazel's Wand
After obtaining a Mac Mini, installing Classic on it, and running Ferazel's Wand only to discover that it runs at about 2 FPS, I found this forum thread (I tried the SheepShaver route first, of course, but unsurprisingly ran into the same issues). I have to say that I'm incredibly glad I'm not the only one who loves this game enough to try this hard to play it; it's been one of my favorite games since it came out, and I was very sad to see the death of Ben's ill-fated Refazel project.
If Jon can reach Ben again, and it really is just a bit of validation code that he can remove, that would be great. Obviously, I'd be ecstatic if Ben felt like releasing the source, and I'd be more than happy to help hack on it, but I have no idea what the legal issues surrounding that might be.
My concern, though, is about the MMU discussion -- FerazelX, how sure are you that it's not the MMU? Needing to use paged memory doesn't make a ton of sense in an old game, but old Mac games can be rather quirky. Also, have you tried Resorcerer or Machonist? It looks like Machonist geared specifically towards Obj-C apps, and it only does static disassembly, but it may be better than nothing. If only FW had been written in the era of GDB and modern disassemblers, or even just ported to Carbon...
If Jon can reach Ben again, and it really is just a bit of validation code that he can remove, that would be great. Obviously, I'd be ecstatic if Ben felt like releasing the source, and I'd be more than happy to help hack on it, but I have no idea what the legal issues surrounding that might be.
My concern, though, is about the MMU discussion -- FerazelX, how sure are you that it's not the MMU? Needing to use paged memory doesn't make a ton of sense in an old game, but old Mac games can be rather quirky. Also, have you tried Resorcerer or Machonist? It looks like Machonist geared specifically towards Obj-C apps, and it only does static disassembly, but it may be better than nothing. If only FW had been written in the era of GDB and modern disassemblers, or even just ported to Carbon...
Re: Ferazel's Wand
I have tried ReSorcerer, but it doesn't support the data fork. As for Machonist, I am pretty sure that is OS X only. Also, I am pretty sure the MMU is not the problem, as Harry the Handsome Executive runs fine. Also, Ferazel's Wand needed to be installed off a CD to a hard drive, unlike most Ambrosia products.
-
- Master Emulator
- Posts: 313
- Joined: Sun Feb 01, 2009 4:55 pm
Re: Ferazel's Wand
Have you tried hex editing a drive and see if it then recognizes the disk as a hard disk (as opposed to a floppy disk)? I suppose this is because of how the disks created are made floppy disks, to make booting up easier or a result of using an architecture similar to that of early 68k Macs. I haven't really studied the older Macs' architecture, although I really should.
Re: Ferazel's Wand
I've been experimenting with Ferazel in HexEdit for the past couple of days and thought I'd share my findings.
Unfortunately, I haven't found a debugger that is compatible with SheepShaver; the program crashes whenever one attempts to run. So to trace the code to where Ferazel was quitting I employed a crude method of inserting infinite loops at certain points in the data. Following this procedure, I have traced the problem to the Monitor_Tool.
Note, I am using the demo version of Ferazel's Wand, so the addresses in the data will likely differ from what the full game's data looks like, but the demo has the same problems as the full version.
In the image above from HexEdit, the program branches to the MT_Open subroutine when register 31 contains a non-zero value. By tracing the execution of Ferazel's Wand on a Mac that runs it, I discovered that the MT_Open subroutine was never called in normal execution. If I omit that call in SheepShaver, an error message about the Monitor_Tool is displayed, along with the erroneous value that was in r31 (it was -7004 for me). To find where this number was set, I looked in the functions above this point and found the important one to be PlatformOpen.
I don't know much PPC assembly, so I can't say what this loop is supposed to be doing. However, in normal execution, the loop did not seem to run even once because r31 still contained zero later in the program. What I especially don't understand is how SheepShaver is getting -7004 in r31 when it starts at 0 and can only add 1 with each loop.
To get around this issue, I manually loaded 0 into r31, hoping it was just a bug in SheepShaver involving that one value. The program got a little farther, into the SetScreenClut subroutine, only to crash again at MT_Close. After getting through that, it crashed at MT_FindMonitor, and after that, it was MT_FadeToColor. Suffice it to say, all of the problems seem to be stemming from the Monitor_Tool, and I doubt it is something that can be fixed by hacking Ferazel's code.
After researching the problem, I saw that EV Nova crashes in SheepShaver with an error about its Monitor Tool. As Cat_7 pointed out in this thread, Build 143 of BasiliskII patches this bug by adding gamma correction. I think it's plausible that the same issue is what's keeping Ferazel from launching. Ferazel is just a little less informative when it crashes, but as I said, you can get an error about the Monitor_Tool if you skip the MT_Open subroutine, which appears to be more for debugging purposes than anything else.
SheepShaver seems to offer gamma correction, but this must be different than changing the gamma ramp values since the BasiliskII patch for EV Nova seems to work while SheepShaver does not. Sadly, this is all outside my realm of knowledge. Unless we can figure out what values are being erroneously set in initialization, at which point it might be possible to fix by hacking the program, we need to determine what the game is expecting from SheepShaver that it's not supplying. I'd love to mess around in SheepShaver's source, but compiling from source is something I'm not very good at. At best, the program I get from the compilation doesn't run.
Sorry for the absurdly long and overly-informative post. Hopefully someone here has an idea on how to move forward.
Unfortunately, I haven't found a debugger that is compatible with SheepShaver; the program crashes whenever one attempts to run. So to trace the code to where Ferazel was quitting I employed a crude method of inserting infinite loops at certain points in the data. Following this procedure, I have traced the problem to the Monitor_Tool.
Note, I am using the demo version of Ferazel's Wand, so the addresses in the data will likely differ from what the full game's data looks like, but the demo has the same problems as the full version.
In the image above from HexEdit, the program branches to the MT_Open subroutine when register 31 contains a non-zero value. By tracing the execution of Ferazel's Wand on a Mac that runs it, I discovered that the MT_Open subroutine was never called in normal execution. If I omit that call in SheepShaver, an error message about the Monitor_Tool is displayed, along with the erroneous value that was in r31 (it was -7004 for me). To find where this number was set, I looked in the functions above this point and found the important one to be PlatformOpen.
I don't know much PPC assembly, so I can't say what this loop is supposed to be doing. However, in normal execution, the loop did not seem to run even once because r31 still contained zero later in the program. What I especially don't understand is how SheepShaver is getting -7004 in r31 when it starts at 0 and can only add 1 with each loop.
To get around this issue, I manually loaded 0 into r31, hoping it was just a bug in SheepShaver involving that one value. The program got a little farther, into the SetScreenClut subroutine, only to crash again at MT_Close. After getting through that, it crashed at MT_FindMonitor, and after that, it was MT_FadeToColor. Suffice it to say, all of the problems seem to be stemming from the Monitor_Tool, and I doubt it is something that can be fixed by hacking Ferazel's code.
After researching the problem, I saw that EV Nova crashes in SheepShaver with an error about its Monitor Tool. As Cat_7 pointed out in this thread, Build 143 of BasiliskII patches this bug by adding gamma correction. I think it's plausible that the same issue is what's keeping Ferazel from launching. Ferazel is just a little less informative when it crashes, but as I said, you can get an error about the Monitor_Tool if you skip the MT_Open subroutine, which appears to be more for debugging purposes than anything else.
SheepShaver seems to offer gamma correction, but this must be different than changing the gamma ramp values since the BasiliskII patch for EV Nova seems to work while SheepShaver does not. Sadly, this is all outside my realm of knowledge. Unless we can figure out what values are being erroneously set in initialization, at which point it might be possible to fix by hacking the program, we need to determine what the game is expecting from SheepShaver that it's not supplying. I'd love to mess around in SheepShaver's source, but compiling from source is something I'm not very good at. At best, the program I get from the compilation doesn't run.
Sorry for the absurdly long and overly-informative post. Hopefully someone here has an idea on how to move forward.
Re: Ferazel's Wand
Hi,
If you want help in the compiling department, we might be able to provide it.
Perhaps not related, but:
A few day ago, I experimented with the game and the inputsprockets extensions it uses. I came across a timing warning when the game was launched. "RmvTime () Descriptor not found". (from timer.cpp)
Best,
Cat_7
If you want help in the compiling department, we might be able to provide it.
Perhaps not related, but:
A few day ago, I experimented with the game and the inputsprockets extensions it uses. I came across a timing warning when the game was launched. "RmvTime () Descriptor not found". (from timer.cpp)
Best,
Cat_7