-
Content Count
5,644 -
Joined
-
Days Won
28
Posts posted by PacManPlus
-
-
Ok, I think I have a handle on the difficulty and the other modes (easy, hard)... But let me tell you, 'hard' difficulty is going to be *INSANE*
EDIT - Wow, Namco was brutal. Not only are there no difficulty dip switches, but the 'lives' dip switch allows between '2' and '3' lives! (i.e. no '5' lives setting)... Ouch!
EDIT2 - Apparently the Japanese version allowed for 5 lives.
-
1
-
1
-
-
Oh absolutely, I just want to first make sure that I didn't make a mistake somewhere that is causing this to be more difficult than it's "supposed" to be.
-
1
-
-
Good Morning!
Thank you all for the replies, and thank you @Pat Brady for the nice details on how to save cycles.
What I ended up doing overnight was completely rewriting the 'dostars' routine. It's about as bare essentials as you can get, no loops, doesn't use X or Y. It takes up quite a bit more code space, but as long as it is more efficient, that's what I need. I also found out during this that the INC I was using, uses 3 times the cycles (6 total) as an ADC (2 total) which I now use. All this time I thought it was the other way around.
Regarding the RAND routine I'm using, it's changed over the years of me doing this, can't remember where I got this one:
RAND
LDA NEWRAND
LSR
ROL NEWRAND+1
BCC RANDNOEOR
EOR #$B4
RANDNOEOR
ADC RTLOCAL+1
CLC
STA NEWRAND
EOR NEWRAND+1
LDA NEWRAND
RTSAnyway, with all that, here is the next update. VERY little slowdown, if any.
So after this, my 'todo' list hasn't changed:
- Try to free some cycle time (although not as imperative now)
- Finish sounds
- Adjust 'normal' (i.e. Arcade) difficulty
- Implement 'easy' and 'hard' difficulty
- Implement Game Demo during attract mode
- Somehow indicate level number (don't have space for flags, so I'll find some other option). I may actually use the flags in the middle of the top line and just switch them out per player.
Thanks guys!
-
11
-
3
-
What's interesting is that the next routine that uses the most cycles is the background star movement. I'm using a single-byte sprite for the star (one per zone) and adjusting the high address and horizontal position of each one in each zone every frame.
I tried *not* calling the star movement routine, and there is no slowdown. I don't really want to get rid of the starfield, so if anyone knows some tricks for this I'm all ears:
; DOSTARS - PROCESS THE BACKGROUND STARS ONCE EVERY OTHER FRAME ; INPUT: NONE ; USES: A, X (GETS SAVED), Y (GETS SAVED), TEMP0, TEMP1, TEMP2 DOSTARS LDA RTLOCAL+1 AND #$01 BNE DOSSTART RTS DOSSTART TXA ;SAVE REGISTERS PHA TYA PHA LDX #$00 ;START FROM THE TOP ZONE LDA #OFFSCRN STA TEMP2 ;THIS FLAGS TO PUT THE STAR IN THE NEXT LOWER ZONE DOSLOOP LDA DLLO,X ;GET THE ADDRESS OF THE FIRST DISPLAY LIST IN THAT ZONE STA TEMP0 LDA DLHI,X ;(THAT IS THE ONE FOR THE STARS) STA TEMP1 LDA TEMP2 ;SEE IF WE ARE CARRYING DOWN A STAR FROM THE ABOVE ZONE CMP #OFFSCRN BEQ DOSLNORMAL ;NOPE, JUST MOVE THIS STAR LDY #$03 STA (TEMP0),Y ;HORIZONTAL POSITION OF STAR ON LOWER ZONE LDA #OFFSCRN STA TEMP2 ;TURN OFF FLAG LDA #$00 STA STARS,X ;START AT THE TOP OF THE ZONE JMP DOSLWRITESTAR DOSLNORMAL LDY #$03 LDA (TEMP0),Y ;SEE IF IT'S ACTIVE CMP #OFFSCRN BEQ DOSNEXT ;NOPE - GO ON TO THE NEXT ONE LDA STARS,X ;GET THE CURRENT SCANLINE WITHIN THE CURRENT ZONE CLC ADC #$01 ;ADD ONE TO THE CURRENT SCANLINE AND #$07 ;MAKE SURE IT'S BETWEEN $00 AND $07 STA STARS,X BNE DOSLWRITESTAR DOSLDOWNZONE LDA (TEMP0),Y ;WRAPPED AROUND TO ZERO - MOVE THE STAR DOWN ONE ZONE STA TEMP2 LDA #OFFSCRN STA (TEMP0),Y LDA #$00 DOSLWRITESTAR CLC ADC #>(STAMPS+$0000) LDY #$02 STA (TEMP0),Y DOSNEXT INX CPX #LASTZONE BMI DOSLOOP ;NOW CHECK TO SEE IF THE FIRST ZONE NEEDS A NEW STAR LDA DLLO STA TEMP0 LDA DLHI STA TEMP1 LDY #$03 LDA (TEMP0),Y CMP #OFFSCRN ;DO WE NEED A NEW STAR? BNE DOSEXIT ;NO, JUST EXIT INC STARS ;YES, BUT WE NEED TO DELAY FOR 1 FRAME LDA STARS CMP #$01 BEQ DOSEXIT JSR RAND ;YES! AND #$7F ;RANGE 0-127 ;CMP #$70 ;OUTSIDE THE RANGE OF THE PLAYFIELD? ;BCS DOSEXIT CLC ADC #LEFTSIDE - 8 ;NOW IT'S 16-144 STA (TEMP0),Y LDA #$00 STA STARS DOSEXIT PLA TAY PLA TAX RTS
Thanks, guys
-
Hi Guys
- Ok, I found and fixed the 'end of wave' issue... It turns out a routine wasn't being called that updated the stats on the alien swarm.
This means I'm adding cycles to something already maxed out. I've made the call to the routine, but now you can see moments of noticeable slowdown, especially when the flagship with two escorts are attacking.
I will try to work on that, but I might need help from someone who is good at reducing cycles to give this a look-see.
Also, the stray bullet that appeared stationary at the top left of the screen has been removed. Finally, I have removed all Pokey calls from the game.
So now what I have left is:
- Try to free some cycle time
- Finish sounds
- Adjust 'normal' (i.e. Arcade) difficulty
- Implement 'easy' and 'hard' difficulty
- Implement Game Demo during attract mode
- Somehow indicate level number (don't have space for flags, so I'll find some other option)
This one should work better...
EDIT - 9:15 PM Replaced binaries, got a compiler error.
-
5
-
Ok... Here is what I have so far!
I have finished 'porting' over the Z80 code to 6502, and while I had to make adjustments to fit with the way I lay out my games, I think it turned out pretty good! However, it seems VERY difficult, so there may be some 'adjusting' I may need to do.
So, what I think I have left:
- Possibly adjust 'normal' (i.e. arcade) difficulty
- Implement 'easy' and 'hard' difficulty
- Fix up sounds
- Implement 'game demo' mode during attract mode
Once I fix up the sounds, I think I may actually remove the Pokey section, (please forgive me @Synthpopalooza - I will need you for other things I plan on working on, if it's ok) ... I don't think this game needs it too much and I believe I can get closer with the shot, drone, and dive sounds. Also I can use the few cycles that check every time it plays a sound.
Here you go, please enjoy and let me know what you think:
-
9
-
1
-
-
Yeah... I need to work on that one.
-
1
-
-
AWESOME!
Thanks! No problem with the time, as I'm still working on Galaxian anyway. But I may make room for this... as well as a new 8K game to fit in here.
-
5
-
-
3 hours ago, RevEng said:The main issue is it's written in 7800basic. While it compiles to assembly, it's machine-generated assembly which isn't as nice to work with. On top of that, it uses all of the flexible utility functions to draw the screen for convenience, but they make the assembly a bit more complicated than it needs to be for a bios. i.e. plotbanner commands that can move the fuji or text around.
I'll have a look at unwinding it into a simpler assembly program.
So are we talking full encryption signature checking? Seems like a lot of stuff to port, and honestly the reason for the goofy NTSC Atari display is the check. It would be easier to just do a quick PAL style check for the cart type, display the screen a few seconds, and then launch the game. That way you could entirely avoid using Atari's signature check routines, and keep this thing open.
You know what? That sounds like a great idea! Start with the PAL BIOS check, display the screen for a few seconds (or maybe add a check for the PAUSE button to skip for people who don't want to wait). Include a 'default' game when nothing is in the cart port. I think the max was a 16K game?
I LIKE THIS!
-
4
-
-
Is the source code available for the BIOS? If it is, and whomever did that non-interactive screen is willing to share their source code, I'd take a crack a trying to do that.
-
2
-
-
So nobody wants a free cart and an AA GC for taking on the manual?
-
On 3/21/2021 at 10:57 AM, Trebor said:Are you wondering if it will fit? Do you think you are crossing a line that should not be crossed? Fear not. Now there's Screen Safe. Screen Safe provides the boundaries you need to know, when you are pushing things beyond safe places.
As Shown On TV, it comes completed with zoned scanline measurements!
Availability:
- Right here - Screen Safe (20210312).a78
- Latest 7800basic release 'samples' folder
- Coming Soon to Trebors 7800 ROM PROPackAs an additional bonus, to be set as the default ROM of the magnificent MiSTer 7800 core, you can obtain your very own standalone copy of a verified screen safe compliant, 7800 Non-Interactive Title Screen...
Grab your copy today... 7800 Non-Interactive Title Screen (20210320).a78 32.13 kB · 8 downloads
Thanks to @RevEng for both provisions!
I would love to have that title screen in the BIOS, instead of:
-
6
-
-
Hi guys:
Ok, bad news: The '2 player simultaneous' selection has to go. I am at the max cycles, and even using a 7800heat utility (made by @RevEng) I can't seem to reduce the number of cycles needed per frame. Something has to go, so the extra code that handles 2 player simultaneous selection is on the chopping block.
I understand that there may be some bloat due to this being my first time converting Z80 to 6502, but I cant help that.
-
3
-
-
Hi guys!
Ok, thanks to @tep392 and @RevEng, I have used their detection code and made one version of PMC-40th. It detects the Yamaha in A7800, the XM, and the Dragonfly, but correctly does not in ProSystem and the CCII (no Yamaha) - it defaults to TIA.
However, during the detection routine just before the initial main screen, there are 1-2 frames of garbage that I can't seem to get rid of, even by turning off the screen.
It bugs me, but between having two versions of the cart and having a quick glitch just before the first time the title screen comes up, I'll take the latter.
Last (Hopefully) version.
-
13
-
1
-
-
I need to pick one of these up and download this.
One curiosity question: if this is FPGA, could you theoretically (eventually) wire in a cartridge port?
-
1
-
-
20 hours ago, tep392 said:My idea is to set one of the timers, which set flags when they roll over. Then poll the flag until it changes and make sure it changes at the right time.
Is there an example of this somewhere?
-
I'd like a new mind when someone changes theirs
-
1
-
-
@offbase - Just checking, Did you plan on handling the manual? Hope to have new artwork soon, so between the two of those we can have the cart in the store soon...
Please let me know, and thank you.
-
1
-
-
-
-
29 minutes ago, DrVenkman said:Neither one of these use POKEY at all, as I understand it. One uses a YM synth, as contained in either an XM or a Dragonfly Cart. The other uses stock 7800 TIA audio.
This is true. There never was a Pokey in this version. It was always TIA or Yamaha.
-
5
-
-
Hi guys...
I want to be done with this, so I'm separating it into two versions:
PMC_YM is the Yamaha version, and
PMC_TIA is the TIA version.
Please note that emulators still won't find the Yamaha.
Thanks, guys.
Bob
-
11
-
5
-
-
Does anyone know the actual footprint of the Yamaha? Is there really no series of bytes (doesn't have to be contiguous) to check that are a specific value if the YM is there or not?
At this point I'm tempted to just make two separate versions, one Yamaha and one TIA.
I just did a series of experiments with the Yamaha from the XM, the Dragonfly, and TIA. I get different values for all three. I was expecting the XM and Dragonfly to match at least somewhere, being they are both using the same YM chip.
-
1
-
-
Thank you.
BTW, just to be clear, the sounds in the video I posted yesterday are TIA.
-
2
-

You guys can thank UniWarS for this one... (Galaxian?)
in Atari 7800
Posted · Edited by PacManPlus
Hey Guys!
It was a complete rewrite of 'DOSTARS'. I was able to remove X and Y, and the 'STARS' array I held in RAM. To answer your earlier question, there are 27 zones of 8 scanlines each:
'LOADSTARS' gets called once just after all of the initialization at the beginning, and 'DOSTARS' gets called at the end of every frame, the last thing before the interrupt at the bottom of the screen: