Jump to content
IGNORED

Henry's House on Altirra


Atari_Force

Recommended Posts

Game bug. Shot from a real 130XE:

 

post-16457-0-47908000-1453083341_thumb.jpg

 

(DIsk booter version of snapshot attached -- requires 128K, ver2 OS and BASIC off.)

 

The issue is that when Henry dies on landing, the game runs a deferred VBI that is way too long:

  19268:255: 27 | A=01 X=FE Y=FF (NV    ) | C24C: 6C 24 02          JMP (VVBLKD)
  19268:255: 34 | A=01 X=FE Y=FF (NV    ) | 3ECC: AD 18 B8          LDA $B818
  19268:255: 39 | A=00 X=FE Y=FF ( V  Z ) | 3ECF: D0 33             BNE $3F04
  19268:255: 42 | A=00 X=FE Y=FF ( V  Z ) | 3ED1: AD 2A B8          LDA $B82A
  19268:255: 47 | A=00 X=FE Y=FF ( V  Z ) | 3ED4: F0 15             BEQ $3EEB
  19268:255: 51 | A=00 X=FE Y=FF ( V  Z ) | 3EEB: AD 0A B8          LDA $B80A
  19268:255: 56 | A=01 X=FE Y=FF ( V    ) | 3EEE: F0 03             BEQ $3EF3
+ 19268:255: 59 | A=01 X=FE Y=FF ( V    ) | 3EF0: 20 D6 43          JSR $43D6
+ 19269: 63: 68 | A=00 X=C8 Y=17 (    ZC) | 3EF3: 20 07 3F          JSR $3F07
- 19269: 64:  9 | A=A3 X=C8 Y=17 (N     ) | 3EF6: 20 83 3F          JSR $3F83
    19269: 64:111 | A=A3 X=C8 Y=17 (N     ) | 3F83: AD 07 B8          LDA $B807
    19269: 65:  6 | A=01 X=C8 Y=17 (      ) | 3F86: F0 03             BEQ $3F8B
    19269: 65:  8 | A=01 X=C8 Y=17 (      ) | 3F88: 4C BD 3F          JMP $3FBD
    19269: 65: 11 | A=01 X=C8 Y=17 (      ) | 3FBD: CE 06 B8          DEC $B806
    19269: 65: 22 | A=01 X=C8 Y=17 (N     ) | 3FC0: AD 06 B8          LDA $B806
    19269: 65: 36 | A=FF X=C8 Y=17 (N     ) | 3FC3: C9 FF             CMP #$FF
    19269: 65: 44 | A=FF X=C8 Y=17 (    ZC) | 3FC5: F0 04             BEQ $3FCB
    19269: 65: 56 | A=FF X=C8 Y=17 (    ZC) | 3FCB: A9 03             LDA #$03
    19269: 65: 62 | A=03 X=C8 Y=17 (     C) | 3FCD: 8D 06 B8          STA $B806
    19269: 65: 70 | A=03 X=C8 Y=17 (     C) | 3FD0: 8D 04 D4          STA HSCROL
    19269: 65: 78 | A=03 X=C8 Y=17 (     C) | 3FD3: EE 26 3E          INC $3E26
    19269: 65: 90 | A=03 X=C8 Y=17 (     C) | 3FD6: AD 26 3E          LDA $3E26
    19269: 65: 98 | A=07 X=C8 Y=17 (     C) | 3FD9: D0 03             BNE $3FDE
    19269: 65:104 | A=07 X=C8 Y=17 (     C) | 3FDE: CE 00 B8          DEC $B800
    19269: 65:111 | A=07 X=C8 Y=17 (     C) | 3FE1: AD 00 B8          LDA $B800
    19269: 66:  8 | A=02 X=C8 Y=17 (     C) | 3FE4: F0 01             BEQ $3FE7
    19269: 66: 12 | A=02 X=C8 Y=17 (     C) | 3FE6: 60                RTS
  19269: 66:112 | A=02 X=C8 Y=17 (     C) | 3EF9: AD 2A B8          LDA $B82A
  19269: 67: 10 | A=00 X=C8 Y=17 (    ZC) | 3EFC: D0 03             BNE $3F01
+ 19269: 67:107 | A=00 X=C8 Y=17 (    ZC) | 3EFE: 20 59 43          JSR $4359
+ 19269: 69:112 | A=B1 X=C8 Y=17 (     C) | 3F01: 20 E0 42          JSR $42E0
  19269: 73: 74 | A=01 X=C8 Y=17 (N     ) | 3F04: 4C 62 E4          JMP XITVBV
  19269: 73: 77 | A=01 X=C8 Y=17 (N     ) | E462: 4C 8A C2  XITVBV  JMP $C28A
  19269: 73: 80 | A=01 X=C8 Y=17 (N     ) | C28A: 68                PLA
  19269: 73: 84 | A=00 X=C8 Y=17 (    Z ) | C28B: A8                TAY
  19269: 73: 86 | A=00 X=C8 Y=00 (    Z ) | C28C: 68                PLA

This pushes a write to HSCROL into the active region where it farks up playfield DMA, which then screws up the display list interrupts. You'll likely only be able to reproduce this in emulation on Altirra 2.40+ due to abnormal playfield DMA being involved.

 

hh-test.zip

  • Like 2
Link to comment
Share on other sites

  • 3 weeks later...

.dumpsnap command issued from the debugger console.

 

 

 

.dumpsnap Create bootable snapshot image

Create a bootable snapshot image from the current simulator state.

.dumpsnap [-u] <path.atr>

Options:

-u Disable compression and use uncompressed blocks

Records hardware and memory state to a disk image with a loader that
restores the state on boot. The snapshot image contains the base 64K
of memory and requires a 128K system to boot (the extra memory is
used by the loader). The loader attempts to reconfigure the hardware
to match the snapshot state and then resume the running program.

Not all state is restored precisely and load success depends on the
exact state and program code. For best results, the same OS ROM
should be used, no cartridge should be present, and the snapshot
should be taken at the beginning of the NMI handler for the vertical
blank interrupt.

 

 

  • Like 2
Link to comment
Share on other sites

  • 4 months later...

I understand but as the bug appears on real hardware its out of the remit of the emulator..The fact it works better on an alternative OS version just means that either a 3rd party looks at the cause taking their time or Avery does if he wants to....

 

Seems to be a bug with the pointer to Charbase (iirc) so the bug points away from the redefined character set but as I'm a lousy programmer I'm most likely wrong..

Edited by Mclaneinc
Link to comment
Share on other sites

I'm guessing issue is more common on NTSC hardware, owing to shorter VBL period (and Avery said stage 2 vblank overrun was to blame).

As I am no assembler programmer this is out of my reach.

 

But I remembered my kids playing this game over and over again back then. So I had to ask somebody to move it from cassette to disk.

 

And the issue to me is that it is not possible to have it dying on landing. There is just one sweet spot my kids discovered in the area which seems to be a bug. As I had to do so many tournaments at home back then I remembered icon_wink.gif. Attached a video taken with Altirra 64 2.40 under Linux, PAL setting. It behaves the same in NTSC mode. It shows where the spot is.

 

For whatever reason this forum software doesn't allow avi files, so I had to pack it.

 

 

henry.avi.zip

Link to comment
Share on other sites

Game bug. Shot from a real 130XE:

 

This pushes a write to HSCROL into the active region where it farks up playfield DMA, which then screws up the display list interrupts. You'll likely only be able to reproduce this in emulation on Altirra 2.40+ due to abnormal playfield DMA being involved.

 

(forum software deleted the attachment ?!)

 

Downloaded and tried the atr within hh-test.zip. And it is the same sweet spot I already knew. But my version of HH doesn't destroy anything else than "Henry". Is it thinkable that your version is corrupted?

 

Same here,

 

played with the "CPM" cheat ..

 

(this forum software sucks, when doing quotes ...)

 

Of course with a cheat, otherwise I would have been lost icon_wink.gif.

Edited by GoodByteXL
Link to comment
Share on other sites

  • 1 month later...

Hi guys

 

I never saw this in 100s of times playing/developing the game but all Ataris in the UK were for PAL TV system, and run at 50Hz vsync.

Yes, I used a lot of interrupts and put a lot of code in interrupts - on purpose to increase colours (sic) and keep gameplay smooth ironically.

Does sounds like shorter interrupt time on NTSC systems isn't sufficient.

 

Back in the 80s, not many people in the UK knew what NTSC was, let alone had access to an NTSC Atari 8-bit.

 

Can you set Altirra to run at 50Hz/PAL instead and see if the bug goes away?

Gonna download Alitrra now...

 

Chris Murray

Edited by mrparp
  • Like 7
Link to comment
Share on other sites

Welcome Chris / Mr Murray,

 

Thank you for your hard work and great creations, you have kept us twiddling the joysticks since then while we still continue to enjoy your and others work.

 

As Rybags says, Phaerons Altirra emulator has the inbuilt debugger to find the causes and is as far as we know the most compatible currently updated 8 bit emulator there is, I'm sure Phaeron would quibble that but for us its the top dog. Even you super coders are allowed a mistake and making programs suitable for both TV systems with their timing issues is hard enough as it is.

 

Again, thank you kind sir for the games, they really DO still get played to this day which isn't bad for an age old bit of software on age old hardware :)

 

Paul...

Link to comment
Share on other sites

  • 2 weeks later...

I have a box in my loft with my old assembler source code for my games.. I'm intrigued if they will still read (they are over 30 years old but been kept pretty well). What's the easiest way to get a 5.25" floppy reader and assembler env these days?

 

Welcome Chris, I really appreciate it when legends like you come on here. And if you didn't know that you were a legend, you do now.

 

I'm just wondering first of all, are you saying that you have an Atari and a disk drive now? Or do you lack these now and require the access to them on the PC?

 

If you don't have an Atari and drive, there are plenty of people who will be able to archive all this for you.

 

If you do have them, you could always daisy chain one of these: (SIO2SD) : http://www.lotharek.pl/product.php?pid=23

 

If you can get them into a PC format on an SD card, you can transmit the file via the internet.

 

A recommended setup nowadays would be a Windows PC with Altirra running as an emulator. The issue that you have is that due to the age of your code, you may need to run a compiler on your emulated Atari. Alternatively, you can convert the code to a modern format (more work though), like MADS. mads.atari8.info/ . This is a great assembler.

 

We also have people such as Kevin Savetz (Username: savetz) who is in the States and converts a lot of old documents / files / disks so that they can go onto the Internet archive. He is a very useful man for this kind or archiving.

  • Like 1
Link to comment
Share on other sites

I have a box in my loft with my old assembler source code for my games.. I'm intrigued if they will still read (they are over 30 years old but been kept pretty well). What's the easiest way to get a 5.25" floppy reader and assembler env these days?

Are you in the UK or somewhere else?
Link to comment
Share on other sites

@Ely: I'm in Bedfordshire, and by looks so are you !!

 

@ other guys - thanks for tips, I need to get up to speed on getting an environment set up. Been mulling over doing some new screens for Henry's House for a while plus making Mirax force a bit easier not to DIE lol.

 

Continually amazes me the activity of forums like this and the hats-off to the guys who created the emulators.

 

C

Edited by mrparp
  • Like 7
Link to comment
Share on other sites

Hi guys

 

I never saw this in 100s of times playing/developing the game but all Ataris in the UK were for PAL TV system, and run at 50Hz vsync.

Yes, I used a lot of interrupts and put a lot of code in interrupts - on purpose to increase colours (sic) and keep gameplay smooth ironically.

Does sounds like shorter interrupt time on NTSC systems isn't sufficient.

 

Back in the 80s, not many people in the UK knew what NTSC was, let alone had access to an NTSC Atari 8-bit.

 

Can you set Altirra to run at 50Hz/PAL instead and see if the bug goes away?

Gonna download Alitrra now...

 

Chris Murray

 

 

Uj Chris "Mirax Force" Murray??? Cool. I love Henry's House and Mirax Force. As coder I fully appreciated and was inspired in using the A8 features. I love the use of DLIs and mixing gfx modes in Henry's house and esp. the multiplexed sprites plus 16 shade panel effects :D

 

and still do.

 

 

Link to comment
Share on other sites

Chris, I know it must seem odd that we still show love towards the old games and hardware but for people like me it was my job and my hobby so its like an old 'mate' that you enjoy being around and of course there's some great memories for us and what makes it a bit special is when guys like you pop in here to say hello, the creators of our fun memories. We have been lucky to have a lot of names pop in here but for me its also great when fellow Brits pop in to say hello and we had had people like you, Adam Michael Bilyard etc come in and spend some time here and we also welcome our other programming heroes from every corner of the world.

 

One thing we get a buzz from is that sometimes people still have their old sources etc and release them so it gets archived and even worked on like in the case of Star Raiders getting programming speed ups and math fixes :)

 

Anything unreleased would be great too :)

 

Seriously, thanks for taking the time to say hello, there's still many many folks still play your work to this day......

 

Paul..

Edited by Mclaneinc
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...