Jump to content
IGNORED

From PAL to NTSC


alfredtdk

Recommended Posts

18 hours ago, alfredtdk said:

How can I convert a PAL ROM to NTSC system.
It would be Sancho's Forest ROM. As far as I know there is no NTSC version.
I think this ROM is perfect for a type of Hack I'm modifying.

 

There are two basic issues; the number of scanlines, and the colours.  Colours are usually easy to adjust.  The number of scanlines... difficulty may vary. Essentially you need to get the scanlines down from 312 (PAL) to 262 (NTSC) if you want standard-size-frames and frames-per-second (FPS).  The FPS is directly tied to the number of scanlines displayed.  Games typically either use a timer, or hardwired delays/WSYNC writes to time the top (vertical blank) and bottom (overscan) areas above and below the visible playfield area. To convert between NTSC/PAL, it is common to adjust the sizes of these two areas to increase/decrease the number of scanlines they "use".  This can be a straightforward process if you know what you're doing, and the ROM is not too obscure in how it handles these areas. It can be tricky if you don't know what you're doing.  You really need to understand the machine reasonably well, and exactly what is required in forming a valid TV frame.  It can be as simple as changing a single value (the timer write).  That's where I'd be starting... looking for writes to TIM64T or similar, and around 'sta WSYNC' instructions. Your best bet, I would say, is having someone who has done this before help you out.

 

 

  • Like 2
Link to comment
Share on other sites

Looking at the game in Stella, the visual portion of the game appears to be around 252 scanlines vs the "typical" 192 scanlines for NTSC game. NTSC displays tend not to like PAL sized images, so the main challenge will be to shrink the visual portion by 60 scanlines or so without impacting gameplay.

 

 image.png.221fbad8dd4d9609e2c5e5bf6a3d3faa.png

 

You can generate a starting point for the source by running the game for a while in Stella then typing savedis in the debugger's Prompt:

 

1178164915_ScreenShot2022-09-06at1_32_39PM.thumb.png.17533cabaf028bba87e122633e851d94.png

 

Which results in this after playing it for a little bit:

 

Forest (1983) (Sancho) (PAL).asm

 

Do note that the more you play it before typing savedis the better the resulting disassembly will be as running the code allows Stella to analyze what the different sections of the ROM are used for.

 

Since it's a PAL game the disassembly has PAL color constants in it:

 

;-----------------------------------------------------------
;      Color constants
;-----------------------------------------------------------

BLACK0           = $00
BLACK1           = $10
YELLOW           = $20
GREEN_YELLOW     = $30
ORANGE           = $40
GREEN            = $50
RED              = $60
CYAN_GREEN       = $70
MAUVE            = $80
CYAN             = $90
VIOLET           = $a0
BLUE_CYAN        = $b0
PURPLE           = $c0
BLUE             = $d0
BLACKE           = $e0
BLACKF           = $f0

 

You can set up a COMPILE_VERSION constant for PAL or NTSC and use it to switch between two sets of color constants, as well as the values written to TIM64T. 

 

NTSC            = 0
PAL             = 1
COMPILE_VERSION = NTSC
;COMPILE_VERSION = PAL


 IF COMPILE_VERSION = NTSC
 
BLACK0           = $00
BLACK1           = $00
BLACKE           = $00
BLACKF           = $00
YELLOW           = $10
BROWN            = $20
ORANGE           = $30
RED              = $40
MAUVE            = $50
VIOLET           = $60
PURPLE           = $70
BLUE             = $80
BLUE_CYAN        = $90
CYAN             = $a0
CYAN_GREEN       = $b0
GREEN            = $c0
GREEN_YELLOW     = $d0
GREEN_BEIGE      = $e0
BEIGE            = $f0

 ELSE

BLACK0           = $00
BLACK1           = $10
YELLOW           = $20
GREEN_YELLOW     = $30
ORANGE           = $40
GREEN            = $50
RED              = $60
CYAN_GREEN       = $70
MAUVE            = $80
CYAN             = $90
VIOLET           = $a0
BLUE_CYAN        = $b0
PURPLE           = $c0
BLUE             = $d0
BLACKE           = $e0
BLACKF           = $f0

 ENDIF

 

 

 

  • Like 3
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...