Jump to content
IGNORED

Scorch - full game for Atari 800 and up


pirx

Recommended Posts

On 5/30/2023 at 10:31 AM, Eyvind Bernhardsen said:

The decision to make pot-pin buttons work like this wasn't invented for Joy2B+, so changing it would break old games, but it's not quite as bad as you make it out to be. This code is universal:

 

PADDL0  = $270
pot_max = $e4

test_button_c
	lda PADDL0
	cmp prev_button_c
	beq not_pressed
	sta prev_button_c
	eor #pot_max
	bne not_pressed
	; code to handle button press goes here!
	...
not_pressed
	; button wasn't pressed, go do something else

prev_button_c
	.byte pot_max

 

(My code calls it "Button C" because that's what it's called on a Megadrive/Genesis controller). You can detect a Joy2B+ or compatible button by checking if prev_button_c ever gets set to anything other than #$e4, and you can read the third button from PADDL1 in the same way.

 

Edit: the code works with a normal joystick because the button is "held down" on startup, and won't be detected until it's "released".

@ascrnet When you have a chance, can you add this information to https://github.com/ascrnet/Joy2Bplus ?  It's definitely a best practice we should highlight for anyone else who wishes to implement Joy2B+ support.

 

(I would have also benefitted from this guidance when I did my Joy2B hacks :-))

 

  • Like 3
Link to comment
Share on other sites

@pirx @Pecus I downloaded the source code and played around with it a bit.

The following fix works for the gameplay section (verified on both my real Atari 800XL and in Altirra, with all three combinations of controllers I mentioned in my previous posts):

 

game.asm: (added code is in purple)

ManualShooting
    .IF TARGET = 800
      lda #0
      sta PaddleState
    .ENDIF        

    lda JoyNumber,x
    sta JoystickNumber    ; set joystick port for player

    ...

 

However, when I tried adding this to textproc.asm (in .proc CallPurchaseForEveryTank) to fix the issue in the purchasing menus, the build failed due to a lack of free bytes. 😞

 

I tried putting the above code snippet in a .proc and having both targets jsr into this routine, but that led to the game getting glitchy after entering all player names and between player turns (I put it right after .proc MainRoundLoop in game.asm).

Either I dislocated some important variable placement, or the 12 extra cycles per call is enough to throw off some (presumably tight) code timing...

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, pirx said:

had to remove a very smol feature to make space and we are rolling again

Had a very brief look into the code, some bytes could also be saved in grafproc.asm:

 

line 471 / 895:  jsr/rts -> jmp

line 810 / 1880: extract those 3 identical lines into one sub-routine. As far as I understand (I'm not a friend of the MADS macros/syntax) that should free at least 15 bytes...

 

Edit: Or (if e.g. X can be trashed) save 5 bytes in SetPMWidth (2092):

    ldx #3
 loop
    sta sizep0, x
    dex
    bpl loop

 

Edited by Irgendwer
  • Like 2
Link to comment
Share on other sites

@pirx  just  quick one. Whilst playing the latest version you just updated, I happen to notice that playing against the computer in moron mode means the AI is quite literally moronic! I am pretty sure the AI was seeing the enemy tanks at least firing in my direction before, even with moron mode engaged. I've not tried with any of the other AI settings. Is this a bug? Has the AI been broken?

 

Running in Altirra

 

What I selected:

image.thumb.png.102f1ce4287fb608ee872da4ff91448d.png

A video showing the AI moron level computer opponent consistantly fire in the opposite direction 99% of the time, (where I am playing as Homer), especially from 31 seconds into the video:

Maybe this is the new uber-moron mode heh heh! ;)

Edited by Beeblebrox
Link to comment
Share on other sites

heeeeey, it is all right, Moron is my first and only baby, the rest was programmed by @Pecus.

 

.proc Moron
    jsr RandomizeAngle
    sta NewAngle
    mwa #80 RandBoundaryLow
    mwa #800 RandBoundaryHigh
    jsr RandomizeForce
    ; choose the best weapon
    ldy #ind_Buy_me         +1    ; if the cheat is active it will fire the BFG :)
    jmp ChooseBestOffensive.NotFromAll
    ;rts
.endp

 

as you can see it is shooting totally at random :]

  • Like 3
Link to comment
Share on other sites

3 minutes ago, pirx said:

heeeeey, it is all right, Moron is my first and only baby, the rest was programmed by @Pecus.

 

.proc Moron
    jsr RandomizeAngle
    sta NewAngle
    mwa #80 RandBoundaryLow
    mwa #800 RandBoundaryHigh
    jsr RandomizeForce
    ; choose the best weapon
    ldy #ind_Buy_me         +1    ; if the cheat is active it will fire the BFG :)
    jmp ChooseBestOffensive.NotFromAll
    ;rts
.endp

 

as you can see it is shooting totally at random :]

cool. I am sure I played the computer in this mode before and never noticed. Cool, glad all is ok.

 

I quite literally feel a moron myself having brought this up heh heh! ;)

 

Great job with the recent collective effort. I will try the latest version with my beloved SNACK controller on real hardware just as soon as I can. 

Edited by Beeblebrox
  • Like 1
Link to comment
Share on other sites

@pirx is lying! :)
He wrote the code for Moron, Shooter and Poolshark.

 

Thanks @Irgendwer for finding places to optimize. Thanks to that I was able to optimize much more.

 

@Beeblebrox The rules of robo-tanks are described in the manual. But still Moron, in its stupidity, is sometimes surprisingly effective.

Edited by Pecus
  • Like 3
  • Haha 3
Link to comment
Share on other sites

19 hours ago, Bobo Cujo said:

@ascrnet When you have a chance, can you add this information to https://github.com/ascrnet/Joy2Bplus ?  It's definitely a best practice we should highlight for anyone else who wishes to implement Joy2B+ support.

 

(I would have also benefitted from this guidance when I did my Joy2B hacks :-))

 

good recommendation, I've already added it to github to let the new developers of the world know. 🤩

Link to comment
Share on other sites

  • 1 month later...

Mq is in charge of the cart producti9n which is great. 

 

Just reading the info the cart will be updatable should any more content be made for the game which is great. 

 

My one question would be will the cart save high scores, etc? 

 

I'll definitely be up for a copy as and when released. :)

Link to comment
Share on other sites

Hi @Beeblebrox, believe me, we were pondering this question, but it is hard because there are so many available options:

players, cash, gravity, wind, rounds, mountains, walls, and 7+ levels of robotanks. 

practically you can not compare two results if any of these parameters differ. 

so either we'd need to make

5^7 * 7 ~= 1/2 mil separate high-score tables.

Alternatively, we could lump some settings together, but then there would be some clearly easier settings to get more points (like fighting against 5 Morons versus 1 Cyborg).

 

So, no soup for you :]
 

  • Thanks 3
Link to comment
Share on other sites

  • 2 months later...

Little revision from the creators of the game with some new features and improvements, (I saw this on the Scorch thread on Atarionline.pl just now) 

 

https://github.com/pkali/scorch_src/tree/develop?search=1

 

Quote from the thread from Pecus:

 

"Another one has been added to the million options in the main menu :)

You can choose a game mode in which there is no "floor" - tanks undermined to the "bottom" fall into nothingness and disappear - they do not give points to other players, but parachutes do not protect against such disappearing into a Black Hole :)

The Earth can be replenished by shooting the appropriate weapons.

And all this because of my child, who once had a bug that caused tanks to "fall" behind the screen. But then it ended with spectacular sags. Anyway, the child said it was cool and he can do it in a working version - so it's done :).

Additionally, there are a lot of little things that no one will probably notice (e.g. better aiming of Lazy weapons..., ability to quickly reset settings, improved descriptions, etc...

And all this thanks to many optimizations - the game is still 32kB - exactly! (well, I had to delete two texts.... :) ).

Files .bin (a5200), .xex (a800) or .prg (c64 :) ) as usual
: ->link<-"

 

****

Thanks to the games coders for continuing to enhance this game. :)

 

 

Edited by Beeblebrox
  • Like 4
  • Thanks 1
Link to comment
Share on other sites

20 hours ago, Pecus said:

The "black hole" option can be enabled with the Tab key (5 on the A5200) when the cursor is in the "Walls" line in menu.

Enabling is indicated by the down arrow symbol next to "Walls".

Hello, I just tried out this new version 1.30 on the 5200 to check out this black hole feature, and I am not getting the down arrow to appear next to the "walls" option, with the cursor on walls line, as stated above. So basically can't turn on the black hole option on the 5200.

Link to comment
Share on other sites

Version 1.30 is the latest "official" release.

All work before the next such "official" release takes place in the develop branch.

You can always find the latest files here: https://github.com/pkali/scorch_src/tree/develop

 

Black Hole option appeared in version 1.41.

 

We plan for the next "official" release on GitHub to appear simultaneously with the physical release on cartridge.

Edited by Pecus
Corrections
  • Like 2
  • Thanks 1
Link to comment
Share on other sites

5 hours ago, Pecus said:

Black Hole option appeared in version 1.41.

 

We plan for the next "official" release on GitHub to appear simultaneously with the physical release on cartridge.

Well, that explains why it don't work, thanks

Link to comment
Share on other sites

On 6/1/2023 at 7:33 PM, Pecus said:

Thanks @Irgendwer for finding places to optimize. Thanks to that I was able to optimize much more.

Just in case you need 2 more bytes, this should do the same job in gr_basics.asm starting at line 464:

    ; and 8 bytes to the table
    ldy #7
    ldx #$FF
CopyChar
    txa
    sta char2,y
    eor (fontind),y
    sta char1,y
    dey
    bpl CopyChar
    ; and 8 subsequent bytes as a mask
    adw fontind #8
    ldy #7
CopyMask
    txa
    eor (fontind),y
    sta mask1,y
    lda #$00
    sta mask2,y
    dey
    bpl CopyMask

 

  • Like 1
  • Thanks 2
Link to comment
Share on other sites

Boxed cart release imminent 🙂

 

Atarionline.pl

https://atarionline.pl/forum/comments.php?DiscussionID=7184&page=1#Item_30

 

Quote

"We are at the finish line!

We have everything working, the cartridges are ready, the load has been tested.
Printing is in its final stage - it is already being produced in the printing house.

The game should be ready for distribution within a few days.

Anyone who hasn't signed up yet - welcome!

I can now confirm what the physical edition of the game will contain:
- a full-color box, originally wrapped in foil, with a space dedicated to the cartridge
- a game cartridge (gold contacts, the highest quality housing from Sikora, thick, high-quality non-abrasive stickers) The
cartridge version of the game has prepared special menu, instructions in Polish and English and a hidden surprise 🙂
- game manual - colorful, multi-page, on good paper

Additionally, two surprises - gadgets:
- "military" diploma of completion of our tank fighting course with a place to write your name and surname , personally signed by the trainers Pecusio and Pirx - the diploma can be hung somewhere, e.g. in a frame
- two beautiful "fridge" magnets enabling a computer-free fighting simulation, e.g. on the mentioned refrigerator:-)
 

 

Edited by Beeblebrox
  • Like 2
  • Thanks 1
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...