So what kind of stuff do people want to see on the SNES?

Discussion of hardware and software development for Super NES and Super Famicom.

Moderator: Moderators

Forum rules
  • For making cartridges of your Super NES games, see Reproduction.
User avatar
B00daW
Posts: 586
Joined: Thu Jan 03, 2008 1:48 pm

Re: So what kind of stuff do people want to see on the SNES?

Post by B00daW » Thu Sep 07, 2017 9:24 pm

I would like to see a Game Boy Color cart/game using VIN expansion audio to be plugged into a Super Game Boy 2, also utilizing the SPC700 audio to full extent and somehow using the SGB border as an active element of gameplay.

User avatar
Drew Sebastino
Formerly Espozo
Posts: 3503
Joined: Mon Sep 15, 2014 4:35 pm
Location: Richmond, Virginia

Re: So what kind of stuff do people want to see on the SNES?

Post by Drew Sebastino » Fri Sep 08, 2017 12:03 am

I'd like to the SNES push a 160x144, 15bpp framebuffer every frame too. :|

Okay, you could try and have the SNES emulate GBC video rather than copying a framebuffer off of the cartridge, But there are many hiccups you would run into, like 4bpp instead of 2bpp sprites, and 2bpp BG layer palettes all using color 0, which means you'd have to use 4bpp graphics for BG layers too. I guess you could deal with this if the SNES can upload 2x as much graphical data into VRAM in one frame.

tepples
Posts: 22085
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: So what kind of stuff do people want to see on the SNES?

Post by tepples » Fri Sep 08, 2017 6:21 am

B00daW wrote:I would like to see a Game Boy Color cart/game using VIN expansion audio to be plugged into a Super Game Boy 2, also utilizing the SPC700 audio to full extent and somehow using the SGB border as an active element of gameplay.
The Super Game Boy 2 was never released for the Super Nintendo Entertainment System. It was exclusive to the Super Famicom; use with the NTSC Super NES requires modification of the console's Game Pak slot, and I doubt it works with the PAL Super NES at all.

Espozo: I think the Super Game Boy 2, specifically 2, was mentioned because 2 added a Game Link port. The idea is that the GBC and SGB2 would be connected through Game Link, running a GBC-mode master program on the GBC and a monochrome slave program on the SGB2 that uses the SPC700.

psycopathicteen
Posts: 2952
Joined: Wed May 19, 2010 6:12 pm

Re: So what kind of stuff do people want to see on the SNES?

Post by psycopathicteen » Fri Sep 08, 2017 10:40 am

An SNES engine should allow the ability to switch between Mode-7 and normal modes mid level, so I'm thinking about arranging VRAM like this:

Code: Select all

$0000-$3FFF, mode 7 layer or normal gameplay 4bpp BG tiles
$4000-$5FFF, sprite patterns
$6000-$6FFF, tile maps
$7000-$7FFF, 2bpp BG tiles, and/or 4bpp BG tiles during split screen mode-7 sections
...and a way to sweep VRAM while transitioning between parts of the level.

psycopathicteen
Posts: 2952
Joined: Wed May 19, 2010 6:12 pm

Re: So what kind of stuff do people want to see on the SNES?

Post by psycopathicteen » Tue Oct 03, 2017 11:24 am

I should really work on this new engine thing. I've been putting this off just because initialization routines are boring, especially when you're setting up registers in VBLANK that you don't need until much later.

I made a table of where I'll put all the shadow sPPU registers in WRAM.

Code: Select all

define joypad1($0000)
define joypad1hi($0001)
define joypad2($0002)
define joypad2hi($0003)
define trigger1($0004)
define trigger2($0006)
define frame_done($0008)

define screen_brightness($0a)
define object_settings($0b)
define BG_mode($0c)
define mosaic($0d)
define BG1_tilemap($0e)
define BG2_tilemap($0f)
define BG3_tilemap($10)
define BG4_tilemap($11)
define BG1&2_char($12)
define BG3&4_char($13)
define BG1xlo($14)
define BG1xhi($15)
define BG1ylo($16)
define BG1yhi($17)
define BG2xlo($18)
define BG2xhi($19)
define BG2ylo($1a)
define BG2yhi($1b)
define BG3xlo($1c)
define BG3xhi($1d)
define BG3ylo($1e)
define BG3yhi($1f)
define BG4xlo($20)
define BG4xhi($21)
define BG4ylo($22)
define BG4yhi($23)
define Mode_7_settings($24)
define par_A_lo($25)
define par_A_hi($26)
define par_B_lo($27)
define par_B_hi($28)
define par_C_lo($25)
define par_C_hi($26)
define par_D_lo($27)
define par_D_hi($28)
define par_X_lo($25)
define par_X_hi($26)
define par_Y_lo($27)
define par_Y_hi($28)
define window_set_1&2($29)
define window_set_3&4($2a)
define window_set_OBJ($2b)
define window_pos_0($2c)
define window_pos_1($2d)
define window_pos_2($2e)
define window_pos_3($2f)
define window_logic_BG($30)
define window_logic_OBJ($31)
define main_screen($32)
define sub_screen($33)
define window_main($34)
define window_sub($35)
define color_math_settings($36)
define color_math_enable($37)
define window_color_red($38)
define window_color_green($39)
define window_color_blue($3a)
define screen_mode($3b)
These work with this code:

Code: Select all

sPPU_register_write:
php
rep #$30
lda {screen_brightness}
sta $2100
sei
tsx
lda #$210c
tas
pei ({BG1&2_char})
pei ({BG3_tilemap})
pei ({BG1_tilemap})
pei ({BG_mode})
lda #$2132
tas
lda {color_math_enable}
ora #$2000
pha
pei ({window_sub})
pei ({sub_screen})
pei ({window_logic_OBJ})
pei ({window_pos_3})
pei ({window_pos_1})
pei ({window_set_OBJ})
pei ({window_set_1&2})
txs
cli
sep #$30
lda {window_color_green}
ora #$40
sta $2132
rep #$20
lda {window_color_blue}
ora #$0080
sta $2132
ldx {BG1xlo}
stx $210d
lda {BG1xhi}
sta $210d
lda {BG1yhi}
sta $210e
lda {BG2xhi}
sta $210f
lda {BG2yhi}
sta $2110
lda {BG3xhi}
sta $2111
lda {BG3yhi}
sta $2112
lda {BG4xhi}
sta $2113
ldx {BG4yhi}
stx $2114
lda {Mode_7_settings}
sta $211a
lda {par_A_hi}
sta $211b
lda {par_B_hi}
sta $211c
lda {par_C_hi}
sta $211d
lda {par_D_hi}
sta $211e
lda {par_X_hi}
sta $211f
ldx {par_Y_hi}
stx $2120
plp
rts

Post Reply