Jump to content
IGNORED

How to find colors in Hack o Matic 3.0.3?


yuppicide

Recommended Posts

Here's that test...

The point values are a little buggy still...they have no provision for being corrected when a rock leaves and another takes it's place...or for exactly how long the value is displayed. That can be worked out once the EXTREMELY wasteful ram allocation is edited a bit.

 

The way I figure, there are 3 important game elements missing...the monkey, bubbles in the water (to keep you from just avoiding the gators completely), and dual rocks/savages (the same kernel portion handles both). A sprite is free for the first issue, a missile or ball can be used to handle the second, and 30hz flicker coding can handle the last. Without them, the game is just too damn easy.

 

In the meantime, more space needs to be scrounged up ;)

 

WARNING to bithackers...

The addresses shown in the assembly file are relevant ONLY to the original game. Many things have been moved around here.

Rock_Points_Test.zip

  • Like 1
Link to comment
Share on other sites

Excellent work as always Nukey. The vine scene is buggy, but the rest looks excellent and I love the rolling rocks with point values. The shading on the large boulders looks great as well.

 

I'm excited to see where you go with this. The ideas for monkeys, bubbles, and dual rocks/savages are very interesting.

Edited by KevinMos3
Link to comment
Share on other sites

Update:

I've got 14 cycles free in the rock/savage kernel without adding any redundancy...just ~n cycle NOPs (which I take it are safe to use anywhere). That is enough time to use line comparison + skipdraw for an additional object. Unfortunately, it would have to be a missile or the ball sprite, but that could pass for a small rock (I guess). The existing small/large rocks can remain the same. So you'd have to avoid an additional object there once added in. Might as well use the ball sprite so it can be colored independantly from the existing rocks.

 

I've still got a full page of memory to use...still haven't gotten around to shuffling variables to make those more efficient. But I did add some additional eye candy (2-tone sea floor, color shading, etc). Will post soon.

Link to comment
Share on other sites

Might end up as an "emulation-only" hack in that case. I don't have any means of testing a game on actual hardware. Z26 and (the last Win98) Stella look fine. No flicker :?

The hunter is not being repositioned correctly in the Vine Scene. He jumps left-right all the time. This is what Yuppicide is talking about, but I thought you new about this already?

 

 

I don't use Z26 anymore as it kept crashing my old computer. I'm using the latest version of Stella only... Actually I'll go test it on real hardware and see if the hunter is jumping like he does in Stella. Give me a few minutes.

Link to comment
Share on other sites

It was also happening on real hardware. I took a look, and I found the problem. HMCLR was being hit too early after a HMOVE. This fix makes it stable.

 

 

 

       sty    NUSIZ1                  ;3
      stx    ENAM1                   ;3
;;       lda    $DD                     ;3       Subtracted Omega
      sec                            ;2
      sta    WSYNC                   ;3
      sta    HMOVE                   ;3
      lda    $DD                     ;3
LD59E:
      sbc    #$0F                    ;2
      bcs    LD59E                   ;2
      eor    #$07                    ;2
      asl                            ;2
      asl                            ;2
      asl                            ;2
      asl                            ;2
      sta    HMP0                    ;3
      sta    RESP0                   ;3
      sta    WSYNC                   ;3
      sta    HMOVE                   ;3  @3
      ldx    #$FF                    ;2  @5
      txs                            ;2  @7
      ldy    #$1D                    ;2  @9
      lda    ($8C),y                 ;5  @11
;;       sta    HMCLR                   ;3        Subtracted Omega, too early after HMOVE

      and    #MOVELINE               ;2 added

      beq    LD5CA                   ;2
      lda    $E2                     ;3
LD5CA:
      TAX                                       Added Omega, X gets reloaded before used
;;       sta    HMBL                    ;3       Subtracted Omega
      lda    ($8E),y                 ;5

      and    #MOVELINE               ;2 added

      beq    LD5D2                   ;2
      lda    $E3                     ;3
LD5D2:
      STA    HMCLR                   ;           Added Omega
      sta    HMM1                    ;3
      STX    HMBL                    ;           Added Omega
      
      sta    WSYNC                   ;3
      sta    HMOVE                   ;3
      ldy    #$3A                    ;2
LD5DA:
      lda    #$00                    ;2
      cpy    $F7                     ;3

Link to comment
Share on other sites

That fixed it Omegamatrix.

 

Try these sprite edits:

I think the mask on the native looks more like a mask, (I thought the mask was a hat when I was a kid... looked like a crown or something to me).

I like the arms back and leaning forward when jumping. I got that idea from the arcade version.

 

Uh... seems the forum won't accept the "percent zero zero" at the front, even with the code command. So, you need to add that, ("percent zero zero" symbols not words - without the quotes), in front of each one that doesn't have it here. The explanation is more for others who stumble on the thread, as Nukey and Omegamatrix obviously know the routine.

 

LD03B: ;savage gfx
      .byte 000000 ; |        | $D03B
      .byte 001100 ; |    XX  | $D03C
      .byte 101000 ; |  X X   | $D03D
      .byte 101100 ; |  X XX  | $D03E
      .byte %11100110 ; |XXX  XX | $D03F
      .byte %10000010 ; |X     X | $D040
      .byte %01100010 ; | XX   X | $D041
      .byte 111111 ; |  XXXXXX| $D042
      .byte 011110 ; |   XXXX | $D043
      .byte 001110 ; |    XXX | $D044
      .byte %01001110 ; | X  XXX | $D045
      .byte %01001110 ; | X  XXX | $D046
      .byte %01010110 ; | X X XX | $D047
      .byte %01101010 ; | XX X X | $D048
      .byte %01001110 ; | X  XXX | $D049
      .byte %01111110 ; | XXXXXX | $D04A
      .byte %01001010 ; | X  X X | $D04B
      .byte %01011111 ; | X XXXXX| $D04C
      .byte %01010101 ; | X X X X| $D04D
      .byte %01010101 ; | X X X X| $D04E
      .byte %01001110 ; | X  XXX | $D04F
      .byte %11101110 ; |XXX XXX | $D050
      .byte %01000000 ; | X      | $D051

LDD52:
      .byte 000000 ; |        | $DD52
      .byte 000011 ; |      XX| $DD53
      .byte 000001 ; |       X| $DD54
      .byte 000011 ; |      XX| $DD55
      .byte %11000110 ; |XX   XX | $DD56
      .byte %01000100 ; | X   X  | $DD57
      .byte %01000100 ; | X   X  | $DD58
      .byte %01000100 ; | X   X  | $DD59
      .byte %01111100 ; | XXXXX  | $DD5A
      .byte %01111100 ; | XXXXX  | $DD5B
      .byte 000000 ; |        | $DD5C
      .byte 001101 ; |    XX X| $DD5D
      .byte 001101 ; |    XX X| $DD5E
      .byte 011101 ; |   XXX X| $DD5F
      .byte 011111 ; |   XXXXX| $DD60
      .byte 011110 ; |   XXXX | $DD61
      .byte 111000 ; |  XXX   | $DD62
      .byte 111000 ; |  XXX   | $DD63
      .byte 011000 ; |   XX   | $DD64
      .byte %01111100 ; | XXXXX  | $DD65
      .byte 111000 ; |  XXX   | $DD66
      .byte 000000 ; |        | $DD67
LDD68:
      .byte 000000 ; |        | $DD68
      .byte 000000 ; |        | $DD69
      .byte 000000 ; |        | $DD6A
      .byte %11000000 ; |XX      | $DD6B
      .byte %01000001 ; | X     X| $DD6C
      .byte %01000111 ; | X   XXX| $DD6D
      .byte %01000111 ; | X   XXX| $DD6E
      .byte %01100100 ; | XX  X  | $DD6F
      .byte 111100 ; |  XXXX  | $DD70
      .byte 011100 ; |   XXX  | $DD71
      .byte 000000 ; |        | $DD72
      .byte 001101 ; |    XX X| $DD73
      .byte 001101 ; |    XX X| $DD74
      .byte 011111 ; |   XXXXX| $DD75
      .byte 011110 ; |   XXXX | $DD76
      .byte 011100 ; |   XXX  | $DD77
      .byte 111000 ; |  XXX   | $DD78
      .byte 111000 ; |  XXX   | $DD79
      .byte 011000 ; |   XX   | $DD7A
      .byte %01111100 ; | XXXXX  | $DD7B
      .byte 111000 ; |  XXX   | $DD7C
      .byte 000000 ; |        | $DD7D
      .byte 000000 ; |        | $DD7E

Link to comment
Share on other sites

Uh... seems the forum won't accept the "percent zero zero" at the front, even with the code command.

 

 

Yes, the forum software goobles these up. I often draw gfx straight in hex anyhow so it doesn't bother me. I wrote a quick excel sheet to convert your gobbled binary to hex for this particular case. It also redraws the commented graphics portion. Different scenarios will require a modified excel sheet.

 

 

CovertGfxFromForumMess.zip

 

LD03B: ;savage gfx
    .byte $00 ; |        | $D03B
    .byte $0C ; |    XX  | $D03C
    .byte $28 ; |  X X   | $D03D
    .byte $2C ; |  X XX  | $D03E
    .byte $E6 ; |XXX  XX | $D03F
    .byte $82 ; |X     X | $D040
    .byte $62 ; | XX   X | $D041
    .byte $3F ; |  XXXXXX| $D042
    .byte $1E ; |   XXXX | $D043
    .byte $0E ; |    XXX | $D044
    .byte $4E ; | X  XXX | $D045
    .byte $4E ; | X  XXX | $D046
    .byte $56 ; | X X XX | $D047
    .byte $6A ; | XX X X | $D048
    .byte $4E ; | X  XXX | $D049
    .byte $7E ; | XXXXXX | $D04A
    .byte $4A ; | X  X X | $D04B
    .byte $5F ; | X XXXXX| $D04C
    .byte $55 ; | X X X X| $D04D
    .byte $55 ; | X X X X| $D04E
    .byte $4E ; | X  XXX | $D04F
    .byte $EE ; |XXX XXX | $D050
    .byte $40 ; | X      | $D051

LDD52:
    .byte $00 ; |        | $DD52
    .byte $03 ; |      XX| $DD53
    .byte $01 ; |       X| $DD54
    .byte $03 ; |      XX| $DD55
    .byte $C6 ; |XX   XX | $DD56
    .byte $44 ; | X   X  | $DD57
    .byte $44 ; | X   X  | $DD58
    .byte $44 ; | X   X  | $DD59
    .byte $7C ; | XXXXX  | $DD5A
    .byte $7C ; | XXXXX  | $DD5B
    .byte $00 ; |        | $DD5C
    .byte $0D ; |    XX X| $DD5D
    .byte $0D ; |    XX X| $DD5E
    .byte $1D ; |   XXX X| $DD5F
    .byte $1F ; |   XXXXX| $DD60
    .byte $1E ; |   XXXX | $DD61
    .byte $38 ; |  XXX   | $DD62
    .byte $38 ; |  XXX   | $DD63
    .byte $18 ; |   XX   | $DD64
    .byte $7C ; | XXXXX  | $DD65
    .byte $38 ; |  XXX   | $DD66
    .byte $00 ; |        | $DD67
LDD68:
    .byte $00 ; |        | $DD68
    .byte $00 ; |        | $DD69
    .byte $00 ; |        | $DD6A
    .byte $C0 ; |XX      | $DD6B
    .byte $41 ; | X     X| $DD6C
    .byte $47 ; | X   XXX| $DD6D
    .byte $47 ; | X   XXX| $DD6E
    .byte $64 ; | XX  X  | $DD6F
    .byte $3C ; |  XXXX  | $DD70
    .byte $1C ; |   XXX  | $DD71
    .byte $00 ; |        | $DD72
    .byte $0D ; |    XX X| $DD73
    .byte $0D ; |    XX X| $DD74
    .byte $1F ; |   XXXXX| $DD75
    .byte $1E ; |   XXXX | $DD76
    .byte $1C ; |   XXX  | $DD77
    .byte $38 ; |  XXX   | $DD78
    .byte $38 ; |  XXX   | $DD79
    .byte $18 ; |   XX   | $DD7A
    .byte $7C ; | XXXXX  | $DD7B
    .byte $38 ; |  XXX   | $DD7C
    .byte $00 ; |        | $DD7D
    .byte $00 ; |        | $DD7E

Link to comment
Share on other sites

It was also happening on real hardware. I took a look, and I found the problem. HMCLR was being hit too early after a HMOVE. This fix makes it stable.
Thanks...I hadn't yet looked into problem code from the original game (this isn't the only spot...HM's are also being set too soon in a few areas).

 

Monkey (placeholder) added. It doesn't have it's own motion yet...it's just following the top of a vine and using the framecounter to move around vertically with no animation. But it will throw you off a vine if you hit it.

 

NOTE: I know there are additional glitches. Still plenty of space to begin addressing those later.

Monkey_Test.zip

Link to comment
Share on other sites

Don't worry...it should be easy to be able to deactivate them if the player wanted to. Difficulties are not used by the program, so that could be an "easy game" mode. I'm still digging up free space left and right as I understand more of the kernel. I barely touched the second bank's code.

Link to comment
Share on other sites

Just tried the lastest build and it looks very sweet, Nukey! I love the monkeys, I love the highlights on "Jungle Hunt", and the points for jumping a ball looks better white/greyish like it is now. I kind of felt ripped off that I didn't get more points for avoiding the large bolder, but I figured out you have to jump it to get max points. The river floor looks nice having 2 colors, but is still too pink for me. I found the gold borders on the oxygen meter a little bright, but all in all great work here Nukey!! :)

Link to comment
Share on other sites

I kind of felt ripped off that I didn't get more points for avoiding the large bolder

lol

The funny thing is that running under the boulder is probably the most difficult way of dealing with it in the VCS port, yet awards the least amount of points. That's one of the things that didn't translate so good :lol:

 

About the colors chosen, those are all subject to change. It's enough to get them set up so they can be altered later. BTW the ocean floor is still broken (I reused the forest routine...but the stack needs a bit of work since they were made for different display methods - reflected vs. asymmetrical).

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...