crisalan44 Posted July 19, 2021 Share Posted July 19, 2021 Anyone experiencing any issues with Cavern Fighter on a Second-generation Phoenix? My phoenix is from the last run and has the firmware it was shipped with and I have it running to my tv through HDMI, no upscalers or extra devices. My cart starts automatically and has the fire buttons pressed. If I hold the joystick up or down after pressing start or reset it goes to the menu screen to allow selection for a normal game to start as it should and plays as it should. Even resetting the phoenix does not cure this. I tried with 2 different Colecovision controllers and both controllers work perfectly on their own and I ran contoller tests to make sure they were functioning correctly, so it is not the controllers. It only happens with Cavern Fighter, all my other carts work fine even the Ice World cart that was also just released. I have already asked a friend who owns a first-gen Phoenix and Cavern Fighter cartridge to test it for me and he does not have this issue, his loads fine and works properly. My Cavern Fighter cart works perfect on my Adam, my Colecovision and my RGB modded Colecovision, it is only on my phoenix it has these issues. Quote Link to comment Share on other sites More sharing options...
+evg2000 Posted July 20, 2021 Share Posted July 20, 2021 sorry, one was first realize phoenix. Quote Link to comment Share on other sites More sharing options...
xdurable Posted July 20, 2021 Share Posted July 20, 2021 Cavern Fighter seems to work correctly on my First Gen Phoenix - but on my Second Gen phoenix - it behaves like the fire button is held down - skips the splash screens straight to the game and is firing. I need to test with a few other cartridge games to confirm the behavior - I might have an hardware issue .. or it might just be Cavern Fighter .. I'll do more testing .. Quote Link to comment Share on other sites More sharing options...
xdurable Posted July 20, 2021 Share Posted July 20, 2021 Interesting - I purchased the Electric Adventures Classics - also from Tony Cruise and it works fine on my 1st Gen Phoenix - but on my 2nd Gen Phoenix it has the same fire button is pressed behavior - and goes straight into Meteor Swarm - I tried several other carts that need to start by pressing the fire button - they seem to be normal - I haven't tried anything yet from the SD card - or any old school cards yet - I suspect they will be fine as they require keypad input .. but I'll go dig out Donkey Kong and Cosmic Avenger and give them a go ... Quote Link to comment Share on other sites More sharing options...
xdurable Posted July 20, 2021 Share Posted July 20, 2021 (edited) Did further Cartridge testing - Donkey Kong and Venture - no apparent issues - seem to be in my case both of the Electric Adventure Cartridges I purchased - skip the splash screens and go straight to the game firing - the CollectorVision Club games work just fine. 2nd Gen Phoenix Firmware : A0 CPU : T80SE V304 VDP - F18A V1.9 Just checked my 1st Gen Phoenix - it has the same Firmware / CPU / VDP as my 2nd Gen Phoenix - Cavern Fighter works on the 1st Gen Edited July 20, 2021 by xdurable update Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 21, 2021 Share Posted July 21, 2021 Looks to be a bug in the game to me. Once a fire button is pressed everything works fine and it no longer has the issue. After game over everything works properly in the menu as well. There is nothing different in the control section between Gen 1 and Gen 2. Loading up the controller tester shows no buttons are being pressed until they are physically pressed on the controller. 22 hours ago, xdurable said: 2nd Gen Phoenix Firmware : A0 CPU : T80SE V304 VDP - F18A V1.9 Just checked my 1st Gen Phoenix - it has the same Firmware / CPU / VDP as my 2nd Gen Phoenix - Cavern Fighter works on the 1st Gen Those are just the bootloader firmware versions. You would need to check the colecovision core version in the load cores screen or install cores screen. Just FYI don't install old cores on the Gen 2. Quote Link to comment Share on other sites More sharing options...
xdurable Posted July 21, 2021 Share Posted July 21, 2021 (edited) 35 minutes ago, Bmack36 said: Looks to be a bug in the game to me. Once a fire button is pressed everything works fine and it no longer has the issue. After game over everything works properly in the menu as well. There is nothing different in the control section between Gen 1 and Gen 2. Loading up the controller tester shows no buttons are being pressed until they are physically pressed on the controller. Those are just the bootloader firmware versions. You would need to check the colecovision core version in the load cores screen or install cores screen. Just FYI don't install old cores on the Gen 2. Colecovision Core - Ver 8 on the 2nd Gen console and Colecovision core Ver 6 on the Gen 1 - I will update the core on the Gen 1 and see what the behavior is. Updated the 1st Gen Core to Ver 7 - works correctly .. are there differences between the Ver 7 and Ver 8 cores - can the Ver 8 core be installed on the 1st Gen Phoenix ? Edited July 21, 2021 by xdurable update Quote Link to comment Share on other sites More sharing options...
youki Posted July 21, 2021 Share Posted July 21, 2021 4 hours ago, Bmack36 said: Looks to be a bug in the game to me. How it can be considered as a bug in the game? It seems to work correctly on standard CV (being PAL, NTSC or SECAM), on Phoenix 1 , on HomebrewVision , (i don't know if somebody tested with ADAM or with SGM plugged?). Could be a bug in the game , if we would observe random behaviors on other setup , but it seems to be constant here? Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 21, 2021 Share Posted July 21, 2021 (edited) 8 hours ago, xdurable said: Colecovision Core - Ver 8 on the 2nd Gen console and Colecovision core Ver 6 on the Gen 1 - I will update the core on the Gen 1 and see what the behavior is. Updated the 1st Gen Core to Ver 7 - works correctly .. are there differences between the Ver 7 and Ver 8 cores - can the Ver 8 core be installed on the 1st Gen Phoenix ? You can install core 8 on an old Phoenix, but there is potential that your TV might not like it. Worst case is you revert to 7 if it doesn't work. Just don't mess with the service core and it will be fine. 4 hours ago, youki said: How it can be considered as a bug in the game? It seems to work correctly on standard CV (being PAL, NTSC or SECAM), on Phoenix 1 , on HomebrewVision , (i don't know if somebody tested with ADAM or with SGM plugged?). Could be a bug in the game , if we would observe random behaviors on other setup , but it seems to be constant here? Not saying this is the case for cavern fighter but lots of CV games (even official ones) have issues that really shouldn't work or rely on dumb luck to work. One example is the Heist where it is reading in uninitialized ram and acting upon it when starting the game. Another example is Centipede where it is acting on the spinner input and the controller gets locked out of menu input due to the spinner being in a specific location (with stock CV and stock Super Action Controller) Edited July 21, 2021 by Bmack36 Quote Link to comment Share on other sites More sharing options...
crisalan44 Posted July 21, 2021 Author Share Posted July 21, 2021 8 hours ago, youki said: How it can be considered as a bug in the game? It seems to work correctly on standard CV (being PAL, NTSC or SECAM), on Phoenix 1 , on HomebrewVision , (i don't know if somebody tested with ADAM or with SGM plugged?). Could be a bug in the game , if we would observe random behaviors on other setup , but it seems to be constant here? It works on my Adam, my RGB modded Colecovision with SGM plugged in and my AV modded Colecovision and my RF Colecovision. It is only the Phoenix where it has these issues. Quote Link to comment Share on other sites More sharing options...
Ikrananka Posted July 21, 2021 Share Posted July 21, 2021 47 minutes ago, crisalan44 said: It works on my Adam, my RGB modded Colecovision with SGM plugged in and my AV modded Colecovision and my RF Colecovision. It is only the Phoenix where it has these issues. Working for me on my stock NTSC CV, F18A modded CV and my 1st gen Phoenix. Quote Link to comment Share on other sites More sharing options...
xdurable Posted July 21, 2021 Share Posted July 21, 2021 (edited) So I added the Ver 8 core to my Gen1 Phoenix ( works with my monitor) ( Core 4 slot ) - Cavern Fighter auto starts same behavior as on the 2nd Gen Phoenix ( Core Ver 8 ) - upon losing all lives - the Start screen flashes for a moment and the game starts again ... seems from my limited testing using Cavern Fighter and Electric Adventures CLASSICS - both from Tony they have the same behavior on the Ver 8 Core. but both work fine on the Ver 7 core. Brian - can the Ver 7 core be used on the 2nd Gen Phoenix ? Edited July 21, 2021 by xdurable update Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 21, 2021 Share Posted July 21, 2021 7 minutes ago, xdurable said: So I added the Ver 8 core to my Gen1 Phoenix ( works with my monitor) ( Core 4 slot ) - Cavern Fighter auto starts same behavior as on the 2nd Gen Phoenix ( Core Ver 8 ) - upon losing all lives - the Start screen flashes for a moment and the game starts again ... seems from my limited testing using Cavern Fighter and Electric Adventures CLASSICS - both from Tony they have the same behavior on the Ver 8 Core. but both work fine on the Ver 7 core. Brian - can the Ver 7 core be used on the 2nd Gen Phoenix ? No you can't use anything before Ver 8 on 2nd Gen as the video interface is different. Quote Link to comment Share on other sites More sharing options...
xdurable Posted July 21, 2021 Share Posted July 21, 2021 (edited) 47 minutes ago, Bmack36 said: No you can't use anything before Ver 8 on 2nd Gen as the video interface is different. OK - so no Ver 7 on the Gen 2 console. So the work around you mentioned works for Cavern Fighter ( pressing the fire button then playing - at Game Over it returns to the menu ) but with the Classics Cartridge - it never returns to the main menu - even pressing 2 or 3 to select one of the other games when the console is first turned on doesn't work - the console doesn't except the input unless ( haven't tried it ) the timing has to be perfect. From what I can tell yes there could be a bug with the games ( loading screen ) - however there could also be a minor bug with the Ver 8 core as it seems to be consistent with games from Tony in cartridge form - based on my testing - all other Collectorvision games that I have - seem to work fine on the Ver 8 core on either Gen of console. Edited July 21, 2021 by xdurable typo Quote Link to comment Share on other sites More sharing options...
Tony Cruise Posted July 22, 2021 Share Posted July 22, 2021 On 7/21/2021 at 9:54 PM, Bmack36 said: You can install core 8 on an old Phoenix, but there is potential that your TV might not like it. Worst case is you revert to 7 if it doesn't work. Just don't mess with the service core and it will be fine. Not saying this is the case for cavern fighter but lots of CV games (even official ones) have issues that really shouldn't work or rely on dumb luck to work. One example is the Heist where it is reading in uninitialized ram and acting upon it when starting the game. Another example is Centipede where it is acting on the spinner input and the controller gets locked out of menu input due to the spinner being in a specific location (with stock CV and stock Super Action Controller) Definitely sounds like the issue is isolated to the version 8 core, the games all work fine on real hardware, all the emulators and version 7 core. If the core is not simulating the original hardware then it will need an update. Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 22, 2021 Share Posted July 22, 2021 Although there may be some difference in the firmware, the fact that no other games, official or homebrew, other then EA games show this issue makes me think something is being done differently in the controller initialization code. Since the game works properly once a button is pressed it isn't an issue with reading the controller in general and just an initialization issue. What we know: -On bootup on a Rev 8 firmware there are no controller buttons actuated (ie no inputs/no buttons depressed) when running controller test roms -No other games display a controller press when booting up -When loading Cavern fighter the game appears to think a button is pressed -The game correctly identifies and reacts when the button is actually pressed and starts working correctly afterwards even through a new game -This would lead me to think something is happening in the controller initialization that is different then any other game. If we can find out what this difference in initialization implementation is, we can determine what in the firmware would affect this initialization code. Quote Link to comment Share on other sites More sharing options...
Zinister Posted July 22, 2021 Share Posted July 22, 2021 3 minutes ago, Bmack36 said: Although there may be some difference in the firmware, the fact that no other games, official or homebrew, other then EA games show this issue makes me think something is being done differently in the controller initialization code. Since the game works properly once a button is pressed it isn't an issue with reading the controller in general and just an initialization issue. What we know: -On bootup on a Rev 8 firmware there are no controller buttons actuated (ie no inputs/no buttons depressed) when running controller test roms -No other games display a controller press when booting up -When loading Cavern fighter the game appears to think a button is pressed -The game correctly identifies and reacts when the button is actually pressed and starts working correctly afterwards even through a new game -This would lead me to think something is happening in the controller initialization that is different then any other game. If we can find out what this difference in initialization implementation is, we can determine what in the firmware would affect this initialization code. The A E rom also has this issue on the gen 2 phoenix rev 8. You press 1 to start the game then it rapid fires until you press a button. Quote Link to comment Share on other sites More sharing options...
Tony Cruise Posted July 22, 2021 Share Posted July 22, 2021 5 minutes ago, Bmack36 said: Although there may be some difference in the firmware, the fact that no other games, official or homebrew, other then EA games show this issue makes me think something is being done differently in the controller initialization code. Since the game works properly once a button is pressed it isn't an issue with reading the controller in general and just an initialization issue. What we know: -On bootup on a Rev 8 firmware there are no controller buttons actuated (ie no inputs/no buttons depressed) when running controller test roms -No other games display a controller press when booting up -When loading Cavern fighter the game appears to think a button is pressed -The game correctly identifies and reacts when the button is actually pressed and starts working correctly afterwards even through a new game -This would lead me to think something is happening in the controller initialization that is different then any other game. If we can find out what this difference in initialization implementation is, we can determine what in the firmware would affect this initialization code. ; ; Set ROM header ORG 8000h ;** CARTRIDGE SOFTWARE POINTERS 8000H ** ; -------------------------------------------- ; DB 0AAh,055h ;Cartridge present: Colecovision logo DB 055h,0AAh ;Cartridge present: skip logo, Colecovision logo DW 0000 ;Pointer to the sprite name table DW 0000 ;Pointer to the sprite order table DW 0000 ;Pointer to the working buffer for WR_SPR_NM_TBL DW CONTROLLER_BUFFER ;Pointer to the hand controller input areas DW START ;Entry point to the user program ;**************************************************************** rst_8: reti nop rst_10: reti nop rst_18: JP RAND_GEN rst_20: reti nop rst_28: reti nop rst_30: reti nop rst_38: reti nop jp NMI db "Lunar Rescue/ELECTRIC ADVENTURES/2021" ; ; Start of application logic START: ; set stack pointer LD SP,StackTop ;128 bytes in length at 737fh ; enable SGM memory if present CALL ENABLE_SGM_MEMORY ; Initialise sound LD B,SoundDataCount ;Max number of active voices+effects LD HL,SoundAddrs CALL SOUND_INIT ; initialise clock LD HL,TIMER_TABLE LD DE,TIMER_DATA_BLOCK CALL INIT_TIMER CALL INITRAM ; Set screen mode 2,2 CALL SETSCREEN2 ;Enable both joysticks, buttons, keypads LD HL,09b9bh LD (CONTROLLER_BUFFER),HL ; Seed random numbers with a fixed number (nothing else to use?) LD HL,1967 CALL SEED_RANDOM ;Enable timers CALL CREATE_TIMERS ; Do all our VRAM setup ; NMI is currently disabled TITLESCREEN: ; display our title screen CALL DISABLE_NMI ; Clear the screen CALL CLEARPAT ; Clean up in case the game left anything on screen CALL CLEARSPRITES CALL SPRWRT ; Load the character set, make all three sections the same CALL LOAD_CHR_SET ; now setup the title screen layout LD DE,VRAM_NAME LD HL,SL_TITLE_D1 CALL dan1rvram;RLE_TO_VRAM CALL DISPLAYMACHINE CALL HISPRT CALL JOYTST ; clear joystick buffer LD HL,OUTPUT_VDP_TITLE CALL SET_VDU_HOOK CALL ENABLE_NMI LD A,15 LD (LEVEL),A SPLASH_TITLE2: CALL JOYTST CP 255 JR Z,NGAME LD A,(HalfSecTimer) CALL TEST_SIGNAL OR A JR Z,SPLASH_TITLE2 ; Any other actions on the title screen go here JR SPLASH_TITLE2 NGAME: ; ; Test for the press of a joystick button (0 or 1) ; A = 255 - fire button pressed JOYTST: CALL POLLER LD A,(CONTROLLER_BUFFER+FIRE1) OR A JR Z,JOYTST2 LD A,255 RET JOYTST2: LD A,(CONTROLLER_BUFFER+5) AND 040h RET Z LD A,255 RET That's all pretty standard code. There are other games that are effected e.g. A.E. has been mentioned as well. Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 22, 2021 Share Posted July 22, 2021 (edited) - Edited July 22, 2021 by Bmack36 double checking something first Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 22, 2021 Share Posted July 22, 2021 9 hours ago, Tony Cruise said: ; ; Set ROM header ORG 8000h ;** CARTRIDGE SOFTWARE POINTERS 8000H ** ; -------------------------------------------- ; DB 0AAh,055h ;Cartridge present: Colecovision logo DB 055h,0AAh ;Cartridge present: skip logo, Colecovision logo DW 0000 ;Pointer to the sprite name table DW 0000 ;Pointer to the sprite order table DW 0000 ;Pointer to the working buffer for WR_SPR_NM_TBL DW CONTROLLER_BUFFER ;Pointer to the hand controller input areas DW START ;Entry point to the user program ;**************************************************************** rst_8: reti nop rst_10: reti nop rst_18: JP RAND_GEN rst_20: reti nop rst_28: reti nop rst_30: reti nop rst_38: reti nop jp NMI db "Lunar Rescue/ELECTRIC ADVENTURES/2021" ; ; Start of application logic START: ; set stack pointer LD SP,StackTop ;128 bytes in length at 737fh ; enable SGM memory if present CALL ENABLE_SGM_MEMORY ; Initialise sound LD B,SoundDataCount ;Max number of active voices+effects LD HL,SoundAddrs CALL SOUND_INIT ; initialise clock LD HL,TIMER_TABLE LD DE,TIMER_DATA_BLOCK CALL INIT_TIMER CALL INITRAM ; Set screen mode 2,2 CALL SETSCREEN2 ;Enable both joysticks, buttons, keypads LD HL,09b9bh LD (CONTROLLER_BUFFER),HL ; Seed random numbers with a fixed number (nothing else to use?) LD HL,1967 CALL SEED_RANDOM ;Enable timers CALL CREATE_TIMERS ; Do all our VRAM setup ; NMI is currently disabled TITLESCREEN: ; display our title screen CALL DISABLE_NMI ; Clear the screen CALL CLEARPAT ; Clean up in case the game left anything on screen CALL CLEARSPRITES CALL SPRWRT ; Load the character set, make all three sections the same CALL LOAD_CHR_SET ; now setup the title screen layout LD DE,VRAM_NAME LD HL,SL_TITLE_D1 CALL dan1rvram;RLE_TO_VRAM CALL DISPLAYMACHINE CALL HISPRT CALL JOYTST ; clear joystick buffer LD HL,OUTPUT_VDP_TITLE CALL SET_VDU_HOOK CALL ENABLE_NMI LD A,15 LD (LEVEL),A SPLASH_TITLE2: CALL JOYTST CP 255 JR Z,NGAME LD A,(HalfSecTimer) CALL TEST_SIGNAL OR A JR Z,SPLASH_TITLE2 ; Any other actions on the title screen go here JR SPLASH_TITLE2 NGAME: ; ; Test for the press of a joystick button (0 or 1) ; A = 255 - fire button pressed JOYTST: CALL POLLER LD A,(CONTROLLER_BUFFER+FIRE1) OR A JR Z,JOYTST2 LD A,255 RET JOYTST2: LD A,(CONTROLLER_BUFFER+5) AND 040h RET Z LD A,255 RET That's all pretty standard code. There are other games that are effected e.g. A.E. has been mentioned as well. Is the INITRAM a BIOS routine or a separate function? If so can you say what is it doing. Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 22, 2021 Share Posted July 22, 2021 So the issue appears to be that the controller initialization is referencing uninitialized RAM. Changes were made to Phoenix's initial RAM state so it would not have an issue with Risky Rick which looks for specific things in the uninitialized RAM like multiple 00s in a row. So the Phoenix initial ram state has some FFs in the ram. When you run these games through the Atarimax (which initializes all RAM to 00) the game runs as normal. If you hit the reset button on the Phoenix (returns ram to initial phoenix ram state), the problem comes back (Atarimax was not power cycled so ram was not initialized to 00s). The conclusion then is there something wrong with reading in the initial controller state that is not properly initializing the controller ram space. Quote Link to comment Share on other sites More sharing options...
youki Posted July 23, 2021 Share Posted July 23, 2021 Risky Rick (cartridge version) checks the initial state of the Ram to be sure it is not running on Emulator or AtariMax. It is part of their "non existent" DRM... 1 Quote Link to comment Share on other sites More sharing options...
Tony Cruise Posted July 23, 2021 Share Posted July 23, 2021 11 hours ago, Bmack36 said: So the issue appears to be that the controller initialization is referencing uninitialized RAM. Changes were made to Phoenix's initial RAM state so it would not have an issue with Risky Rick which looks for specific things in the uninitialized RAM like multiple 00s in a row. So the Phoenix initial ram state has some FFs in the ram. When you run these games through the Atarimax (which initializes all RAM to 00) the game runs as normal. If you hit the reset button on the Phoenix (returns ram to initial phoenix ram state), the problem comes back (Atarimax was not power cycled so ram was not initialized to 00s). The conclusion then is there something wrong with reading in the initial controller state that is not properly initializing the controller ram space. The addresses you don't want to fill with FF are: - SPIN_SW0_CT (73EB) : Spinner counter port #1 - SPIN_SW1_CT (73EC) : Spinner counter port #2 - S0_C0 (73EE) : Segment #0 data, port #1 - S0_C1 (73EF) : Segment #0 data, port #2 - S1_C0 (73F0) : Segment #1 data, port #1 - S1_C1 (73F1) : Segment #1 data, port #2 And the 12 bytes pointed to by the pointer at 8008h in the cartridge header. Rather than break your emulation to make one cartridge work (that is actively trying to detect emulation) and stop probably quite a few other games from working (that work fine on all versions of real hardware and all the emulators) I think it would be better to go back to your memory initialisation used in version 7 and it would probably be better to figure out which addresses Risky Rick checks to add some values or even detect that it is a Risky Rick cartridge and only do your changed behavior for that cartridge/rom. And look I'm happy to add a call to CONTROLLER_INIT in future titles to make sure, but it's not going to fix existing ones that have an issue (and there will probably be more titles than have been listed so far that will have issues). The Phoenix Coleco core is supposed to emulate a Coleco after all. 2 Quote Link to comment Share on other sites More sharing options...
Bmack36 Posted July 23, 2021 Share Posted July 23, 2021 The added call to Controller_init resolves the issue. Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 23, 2021 Share Posted July 23, 2021 11 hours ago, Tony Cruise said: And look I'm happy to add a call to CONTROLLER_INIT in future titles to make sure, but it's not going to fix existing ones that have an issue (and there will probably be more titles than have been listed so far that will have issues). The Phoenix Coleco core is supposed to emulate a Coleco after all. RAM powerup is random, you should not be relying on it to be any specific value when your software starts, ESPECIALLY when your software specifically skips the BIOS initialization code, which actually DOES init all that for you. Init your hardware, people. 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.