VOGONS


IBM PCjr Problem

Topic actions

Reply 20 of 45, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Demon Attack without mirroring must be at segment E600h. However, consider the first executed instruction in Demon Attack: a far jump to E600:0008... if the code is executing at segment E600, that is a far jump to the very next instruction, so why do that? Because it's supposed to be a far jump from E000 to E600, and that jump is evidence that the mirroring is the same as in Microsurgeon, even if the game works without it. Instead of a far jump, Microsurgeon uses a relative near jump that makes the mirroring essential. I wonder if this mirroring and jumping between the mirrored banks was supposed to be some kind of copy protection.

Reply 21 of 45, by Great Hierophant

User metadata
Rank l33t
Rank
l33t
ripsaw8080 wrote:

Demon Attack without mirroring must be at segment E600h. However, consider the first executed instruction in Demon Attack: a far jump to E600:0008... if the code is executing at segment E600, that is a far jump to the very next instruction, so why do that? Because it's supposed to be a far jump from E000 to E600, and that jump is evidence that the mirroring is the same as in Microsurgeon, even if the game works without it. Instead of a far jump, Microsurgeon uses a relative near jump that makes the mirroring essential. I wonder if this mirroring and jumping between the mirrored banks was supposed to be some kind of copy protection.

Probably to make it more difficult for hackers to dump the image and turn it into a com or exe file.

Here are the starting segments for all known cartridge programs which have been dumped :

IBM PCjr. Cartridge Basic - E800 32K
PCjr. Colorpaint - E000 64K
Lotus 1-2-3 Cartridge A - D000 64K
Lotus 1-2-3 Cartridge B - E000 64K
Crossfire - E000 8K
Demon Attack - E600 16K
ScubaVenture - E600 8K
Mineshaft - E600 8K
Pitfall 2 - E000 16K
River Raid - E000 16K
Mouser - E000 8K
Microsurgeon - E000 & E600 16K

There would be no need for headers for emulation purposes if all PCjr. cartridge dumps were 128KB in size to correspond to the D-E segments. This information would be necessary to people trying to make a custom cartridge.

Last edited by Great Hierophant on 2013-11-07, 18:58. Edited 1 time in total.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog

Reply 22 of 45, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author
Great Hierophant wrote:

There would be no need for headers for emulation purposes if all PCjr. cartridge dumps were 128KB in size to correspond to the D-E segments.

Sounds inefficient to me. The entry point is relative to the ROM segment, and without that value from the header you'd have to scan through the address space to figure out where the ROM bank is located... I prefer a header to that.

A more advanced header spec would allow a single ROM bank to be read at multiple segments; the 2x repetition in Microsurgeon (and Demon Attack if you're trying to be accurate) is a workaround for the lack of such capability.

Reply 23 of 45, by ronald_herrera

User metadata
Rank Newbie
Rank
Newbie

Hi, I was trying everything that I can to make this cartridge img (Demon Attack) to work on the DOSBOX but I couldn't understand the hexadecimal codes for the header. Even I tried to manually (with a HEX editor) make a header of 512bytes but the run failed. Can I have the sample of the mods or the entire IMG to see what was I doing wrong? Thank You!.

Ronald.

Reply 24 of 45, by Trajk Logik

User metadata
Rank Newbie
Rank
Newbie

Hi,
I found this thread while searching for a solution to this problem with Demon Attack. I'm sorry but I'm hex-editor-deficient and was wondering if someone might be able to send me the hexed copy of Demon Attack that is compatible with DOSBox?

Thanks in advance.

Reply 25 of 45, by ronald_herrera

User metadata
Rank Newbie
Rank
Newbie

Hi, if you can see the date of my post, I still haven't a respond yet, so I'm wondering myself. Sorry, I have failed and no one seems to care. 🙁 I stop trying but I never let my hopes down and still watching for someone to answer our question. 😀

Reply 26 of 45, by ronald_herrera

User metadata
Rank Newbie
Rank
Newbie

Okay... following the nerdy terms and the comments that our past friends left us. I could manage to run the Demon Attack cartridge dump to a fix of the "damnated" header (pushing the code at 513 bytes location) and the editing to write the tiny byte "E6" at the 462 length byte location that was need it to run. You know what. whatever, give me a email address and I'll send what-so-far I have done. I'll give you some simple steps to run the program. But remember, I guess the game needs a joystick on less there's something wrong with the code segment. Al least the demo display beautifully the game, but I'm still working on it in order to use the keyboard; if it's possible. Somehow I feel all alone. 😢

Reply 29 of 45, by collector

User metadata
Rank l33t
Rank
l33t

Just a note, you should not be distributing copyrighted openly on this forum.

The Sierra Help Pages -- New Sierra Game Installers -- Sierra Game Patches -- New Non-Sierra Game Installers

Reply 32 of 45, by VileR

User metadata
Rank l33t
Rank
l33t
ronald_herrera wrote:

But remember, I guess the game needs a joystick on less there's something wrong with the code segment. Al least the demo display beautifully the game, but I'm still working on it in order to use the keyboard; if it's possible. Somehow I feel all alone. 😢

Use the internal DOSBox keymapper to assign joystick events to keys -- works very nicely with most games. I do this even for games where keyboard support exists but is horrible/broken (e.g. Shamus).
The comments about timed=true and low cycles apply to this game as well.

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]

Reply 34 of 45, by ronald_herrera

User metadata
Rank Newbie
Rank
Newbie

As in the config: usescancodes=true ... and... timed=true ..and... joysticktype=auto ... How can I use keymapper to assign the cursors keys without a physical joystick? I also tried to bind the cursors keys to act as a joystick but do not know the scancodes in the mapper file. (e.g.: key_up "key 273" to key_up "jaxis_0_1-" ???). What should I do?

Reply 35 of 45, by VileR

User metadata
Rank l33t
Rank
l33t

joysticktype=auto needs a physical joystick to detect - if you don't have one just set it to 2axis.

As for the mapper file, it's the other way around - the entries you want to modify are "jaxis_0_*", not "key_up" etc. You can view my example here (I use the numpad for movement + ctrl and alt for the buttons, but you can easily replace "key ###" with whatever you need).

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]

Reply 37 of 45, by ronald_herrera

User metadata
Rank Newbie
Rank
Newbie

The mapper mods has been done and game has been responded well. But the firing-ship tends to move automatically to the right without pressing any key. It actually goes to the left if I press the left key until I stop holding it. Which, again, drifts to the right by itself.
Can I calibrate or stabilize the virtual-joystick in order to be able to maintain a hold of the ship at any sides?

Note: If I choose to make the change to "timed=false" then what happen is that it goes to the right side, but can't be able to move it again.

Considering my relevant config:
[SDL, DOSBOX]: usescancodes=true; machine=pcjr
[CPU]: core=auto; cputype=auto; cycles=fixed 150
[JOYSTICK]: joysticktype=2axis; timed=true; autofire=false; swap34=false; buttonwrap=false

Reply 38 of 45, by VileR

User metadata
Rank l33t
Rank
l33t

With timed=true the joystick's "drift" is related to the cycle count - too low and it drifts to the left, too high and it goes right. Cycles=300 or so works for me.

[ WEB ] - [ BLOG ] - [ TUBE ] - [ CODE ]