User contributions for NovaSquirrel
From SNESdev Wiki
Jump to navigationJump to search
25 April 2024
- 17:5617:56, 25 April 2024 diff hist +3,342 N Audio drivers Start off this page with the drivers I know about current
18 December 2023
- 18:3118:31, 18 December 2023 diff hist +1 m 65c816 for 6502 developers →Small optimizations: Fix a formatting typo current
22 July 2023
- 17:5017:50, 22 July 2023 diff hist +227 Errata →Video: Note about how rectangular sprites do vertical flips
10 July 2023
- 16:5516:55, 10 July 2023 diff hist +26 Memory map →Overall: Add link to MEMSEL current
12 June 2023
- 18:4118:41, 12 June 2023 diff hist +188 Tricky-to-emulate games Added Speedy Gonzales
4 May 2023
- 14:4414:44, 4 May 2023 diff hist −228 Uncommon graphics mode games →BG Mode 7 EXTBG: I went and checked the Bowser fight with Mesen2's register viewer, and extbg is not enabled
18 January 2023
- 19:0519:05, 18 January 2023 diff hist +24 PPU registers Update note about what ZSNES does
5 October 2022
- 20:0820:08, 5 October 2022 diff hist +31 Memory map →ExHiROM: Add diagram
- 20:0720:07, 5 October 2022 diff hist +232 N File:Snes exhirom map.png Map of Super NES address space in mode $25 ("ExHiROM") Edit by lidnariq of the HiROM map originally made by Damian Yerrick https://forums.nesdev.org/viewtopic.php?p=283508&sid=b7787101ceda9ec7e25a4485d45ebc77#p283508
31 July 2022
- 16:3416:34, 31 July 2022 diff hist +332 Tools Add the web tools I made
7 June 2022
- 18:3918:39, 7 June 2022 diff hist +20 SNESdev Wiki →Registers: Add red link for APU registers
- 01:4301:43, 7 June 2022 diff hist +308 Uncommon graphics mode games →Vertical Offset-per-tile: Aladdin, Axelay, Battletoads, Super Turrican 2
- 01:3301:33, 7 June 2022 diff hist +350 Uncommon graphics mode games Mode 7 EXTBG
- 01:2201:22, 7 June 2022 diff hist +133 Uncommon graphics mode games →Horizontal Offset-per-tile: Super Mario Bros 2
5 June 2022
- 18:3318:33, 5 June 2022 diff hist +156 Uncommon graphics mode games →Mode 3 8bpp: Add Sim City 2000 and Zoop
2 June 2022
- 03:3403:34, 2 June 2022 diff hist +2,252 N Register sizes in ca65 Created page with "When the 65c816's registers switch between being 8-bit and 16-bit, that affects how the processor expects instructions with immediate operands to be stored. For example, when the 65c816 encounters opcode <code>A9</code> (which is <code>LDA #value</code>) the current size of the accumulator determines if it will try to read one or two bytes after the opcode. This creates a problem for assemblers - they have to know whether to encode <code>LDA #1</code> as <code>A9 01</cod..."
- 03:1803:18, 2 June 2022 diff hist +6 65c816 for 6502 developers →16-bit registers!: Fix the processor flag table
1 June 2022
- 05:2605:26, 1 June 2022 diff hist +53 PPU registers →SETINI - Screen Mode/Video Select ($2133 write): Mention EXTBG's effect in other modes
- 05:0805:08, 1 June 2022 diff hist +67 Uncommon graphics mode games →Mode 0: The Simpsons: Bart's Nightmare
31 May 2022
- 05:5005:50, 31 May 2022 diff hist +9 Errata →DMA: Move the note about RAM-RAM DMA copies up into the invalid A-Bus note
- 04:1004:10, 31 May 2022 diff hist +90 DMA examples →WRAM clear: Add a note about why WRAM clears can't use WRAM source address
30 May 2022
- 00:1300:13, 30 May 2022 diff hist +1 m Uncommon graphics mode games →Vertical Offset-per-tile
- 00:1200:12, 30 May 2022 diff hist +99 Uncommon graphics mode games →Vertical Offset-per-tile: Add Prehistorik Man
28 May 2022
- 20:4020:40, 28 May 2022 diff hist +4,259 N DMA examples Created page with "This page provides examples on how to use DMA registers to do fast copies on the SNES. These examples use the following defines to make the code clearer: <pre> ; Registers Also known as... DMAMODE = $4300 ; DMAPn DMAPPUREG = $4301 ; BBADn DMAADDR = $4302 ; A1TnL DMAADDRHI = $4303 ; A1TnH DMAADDRBANK = $4304 ; A1Bn DMALEN = $4305 ; DASnL DMALENHI = $4306 ; DASnH ; Configuration for $43n0 ; OR these together to get the desired e..."
- 07:2507:25, 28 May 2022 diff hist +181 Multiplication →References: Link to more examples of multiplication routines
26 May 2022
- 20:5620:56, 26 May 2022 diff hist +33 SNESdev Wiki →Peripherals: Add red links for multitap and Super Scope
- 17:3117:31, 26 May 2022 diff hist +244 Errata Convert some links to citations
25 May 2022
- 18:5118:51, 25 May 2022 diff hist +426 Controller reading →Automatic controller reading: Add note about controller reading not happening immediately - see https://forums.nesdev.org/viewtopic.php?p=188011
- 18:3118:31, 25 May 2022 diff hist +125 Talk:Controller reading →HVBJOY current
23 May 2022
- 15:4115:41, 23 May 2022 diff hist +4 Errata →Video: Missing "not"
- 14:3514:35, 23 May 2022 diff hist +436 Errata →Video: Add note about 16x32 sprites and OBJ interlacing
22 May 2022
- 23:0723:07, 22 May 2022 diff hist +8 Uncommon graphics mode games →Horizontal Offset-per-tile: Note that Super Genjin 2 is another Mode 4 offset-per-tile game
- 22:3622:36, 22 May 2022 diff hist +214 SNESdev Wiki →Examples and Guides: Add red links and organize
- 22:0822:08, 22 May 2022 diff hist +102 Errata →Video: Add a note about color math and sprite palettes
- 20:0420:04, 22 May 2022 diff hist +235 Uncommon graphics mode games Add more offset-per-tile games
- 19:4419:44, 22 May 2022 diff hist +162 Uncommon graphics mode games →Vertical Offset-per-tile: Add Bust-a-Move
- 19:2319:23, 22 May 2022 diff hist −42 Booting the SPC700 →Running the SPC700 program: Fix a copy/paste issue
- 19:1819:18, 22 May 2022 diff hist +1 m Controller reading →Automatic controller reading
- 19:0719:07, 22 May 2022 diff hist +25 SNESdev Wiki →Examples and Guides: Controller reading
- 19:0619:06, 22 May 2022 diff hist +3,903 N Controller reading Created page with "The SNES has a feature that can automatically read the game controllers, so the 65c816 does not need to spend any time doing that. The controllers can also be read manually, the same way the NES does it. The automatic reading feature will only read 16 bits from the controller, so peripherals like the Mouse need to be read either completely manually or with a combination of automatic and manual reading. == Automatic controller reading == Automatic controller reading..."
- 17:1517:15, 22 May 2022 diff hist +25 SNESdev Wiki →Examples and Guides: Add Booting the SPC700
- 17:1417:14, 22 May 2022 diff hist +6,872 N Booting the SPC700 Created page with "When the SNES powers on, the SPC700 starts running a small program which does some initialization and then waits to communicate with the 65c816. At this point the 65c816 can instruct the SPC700 to load a new program into its RAM and start running it. This page explains how to do this. Communication with the SPC700 involves four registers - $2140, $2141, $2142 and $2143. These four bytes correspond to $f4, $f5, $f6 and $f7 on the SPC700-side, respectively. When one s..."
- 01:2201:22, 22 May 2022 diff hist +249 Errata The $2143 corruption problem may not actually exist
21 May 2022
- 06:2506:25, 21 May 2022 diff hist +151 Errata →Video
- 06:1106:11, 21 May 2022 diff hist +617 Errata No edit summary
- 05:5405:54, 21 May 2022 diff hist +356 N Talk:Errata Created page with "The stuff on this page definitely needs to be double-checked, and ideally tested on a SNES where applicable. These issues don't seem to be documented very well online, and I've had to rely on forum posts and bits of documentation here and there about problems. - ~~~~"
- 05:4205:42, 21 May 2022 diff hist +13 SNESdev Wiki →General
- 05:4205:42, 21 May 2022 diff hist +148 Errata →Video
- 05:2205:22, 21 May 2022 diff hist +3,146 N Errata Created page with "This page describes quirks in the SNES hardware that programmers need to be aware of. They could be mistakes in the hardware's implementation, or just unintuitive behavior. == Video == * Offset-per-tile never affects the first (leftmost) tile. * The SNES programming manual describes a situation where the Time Over flag is erroneously set when the first hardware sprite is 16x16, 32x32, or 64x64, has a horizontal position of 0-255, and other hardware sprites have nega..."
- 02:1502:15, 21 May 2022 diff hist +383 Division →Division registers
- 01:5901:59, 21 May 2022 diff hist +84 Division →Division registers: Right justify the registers to line them up
- 01:5301:53, 21 May 2022 diff hist +15 SNESdev Wiki →Examples and Guides: Add division link
- 01:5201:52, 21 May 2022 diff hist +2,223 N Division Created page with "The 65c816 does not include a division instruction. However, the SNES includes division hardware for games to use, and games can access it with registers. It's capable of dividing a 16-bit number by an 8-bit number, and it produces a 16-bit result and a 16-bit remainder. All inputs and outputs are unsigned. == Division registers == WRDIVH WRDIVL $4205 $4204 7 bit 0 7 bit 0 ---- ---- ---- ---- HHHH HHHH LLLL LLLL |||| |||| |||| |||| +++..."
20 May 2022
- 21:3921:39, 20 May 2022 diff hist +203 Multiplication No edit summary
- 20:1520:15, 20 May 2022 diff hist −12 Multiplication →"PPU" multiplier
- 20:1520:15, 20 May 2022 diff hist +39 Multiplication →"PPU" multiplier
- 19:5919:59, 20 May 2022 diff hist +4,870 N Multiplication Created page with "The 65c816 does not have a multiplication instruction, but the SNES includes multiplication hardware that can be accessed with registers. These are faster than implementing general-purpose multiplication in software. There are two available multipliers: * 5A22 multiplier ** 8-bit number × 8-bit number = 16-bit result ** Uses unsigned numbers: $ff (255) × $ff (255) = $fe01 (65025) ** There is a delay between writing the parameters and correct results being av..."
19 May 2022
- 22:3022:30, 19 May 2022 diff hist +1,719 N Scrolling a large map Created page with "A lot of games have their action take place in an area that's too big to fit on the screen at once. To support this, SNES tilemaps can be bigger than the screen, and a programmer can use scrolling to choose which section of it should be displayed. However, the biggest available sizes are still too small for most games' needs. To get around this limitation, a game can simulate an infinitely large tilemap. This involves determining the scrolling direction and continua..."
- 21:1821:18, 19 May 2022 diff hist +177 N File:NTS scrolling seam.gif Animation explaining how to perform scrolling across a horizontal playfield longer than 512 pixels. It uses the first four screens of a level in Nova the Squirrel.
10 May 2022
- 21:2021:20, 10 May 2022 diff hist 0 Using X as a pointer →Array of structures example (ca65): Switch cmp for cpx current
- 20:3520:35, 10 May 2022 diff hist +5 m Using X as a pointer →Array of structures example (ca65): Make indentation consistent
- 20:3220:32, 10 May 2022 diff hist −16 Using X as a pointer No edit summary
- 20:3020:30, 10 May 2022 diff hist +3,453 N Using X as a pointer Created page with "Because the 65c816's index registers can be 16-bit, they can hold a 16-bit address. For programs that already use 16-bit index registers for other reasons (such as accessing level data), this can sometimes create an optimization opportunity, allowing for the use of faster addressing modes and smaller code. {| class="wikitable" |+ Addressing mode comparison |- ! Instruction !! Bytes !! Cycles |- | <code>LDA directpage,x</code> || 2 || * 4 * + 1 (16-bit A) * + 1 (low by..."
9 May 2022
- 15:4915:49, 9 May 2022 diff hist +116 DMA registers Add register names to some bit diagrams
- 06:1806:18, 9 May 2022 diff hist 0 SNES PPU for NES developers →Tilemaps/Nametables: Accuracy fix
- 05:3505:35, 9 May 2022 diff hist +1,927 N Offset-per-tile Created page with "Offset-per-tile is a feature of background modes 2, 4, and 6. It allows overriding a layer's horizontal and vertical scroll position on a tile-by-tile basis. This the effect behind the dizzy effect in Yoshi's Island, and it allows Tetris Attack to have two different playfields with different vertical positions. This feature can be used to simulate a rotating background for small rotation angles, as seen in Star Fox. == Details on how the feature works == In offset-per..."
- 04:1804:18, 9 May 2022 diff hist +8,690 N DMA registers Created page with "The SNES's DMA (Direct Memory Access) unit allows a game to copy graphics, palettes, OAM and more at a much higher speed than the CPU can accomplish alone. This allows a game to make better use of the limited amount of time it has in vblank to change graphical memory. The SNES has two address buses - consisting of the A bus (which contains cartridge ROM, cartridge RAM, and the SNES's RAM) and the B bus (anything in the $2100-$21ff range, including PPU registers..."
8 May 2022
- 21:0521:05, 8 May 2022 diff hist +185 Memory map No edit summary
- 20:5020:50, 8 May 2022 diff hist −3 m Memory map →LoROM
- 20:4820:48, 8 May 2022 diff hist +2,375 N Memory map Created page with "== Overall == File:Snes overall map.png The SNES natively provides access to RAM and I/O at specific locations. The cartridge is free to provide whatever it wants in the remaining space, and there are specific address ranges that are conventionally used to add access to additional hardware such as extra RAM or a coprocessor. Different address ranges are accessed at different speeds, and the speed of the ROM at banks $80-$FF may be changed with register $420D. The f..."
- 20:1220:12, 8 May 2022 diff hist 0 N File:Snes hirom map.png No edit summary
- 20:1120:11, 8 May 2022 diff hist 0 N File:Snes lorom map.png No edit summary
- 20:1120:11, 8 May 2022 diff hist 0 N File:Snes overall map.png No edit summary
- 20:0820:08, 8 May 2022 diff hist +10 ROM header No edit summary
- 19:4919:49, 8 May 2022 diff hist +783 ROM header No edit summary
- 19:2819:28, 8 May 2022 diff hist +670 ROM header No edit summary
- 19:0619:06, 8 May 2022 diff hist +3,034 N ROM header Start off this page - fill in details later
- 17:5117:51, 8 May 2022 diff hist +5,961 N Mouse Adapted from NESDev wiki
- 17:3617:36, 8 May 2022 diff hist 0 m SNES PPU for NES developers →VRAM
- 17:3517:35, 8 May 2022 diff hist +3,886 N SNES PPU for NES developers Created page with "The SNES PPU and NES PPU use every similar concepts for displaying graphics. This article will summarize some important differences and similarities, and lay out some basics before you learn about things more in-depth. == VRAM == Video RAM is 64KB and contained within the console. Additional video memory cannot be added via cartridge. VRAM contains the tilemaps used for backgrounds as well as the graphics data for background tiles and sprite tiles. You can deci..."
- 17:2917:29, 8 May 2022 diff hist −1 m 65c816 for 6502 developers →Emulation mode
- 17:2817:28, 8 May 2022 diff hist +19,118 N 65c816 for 6502 developers Created page with "This guide is meant to introduce the 65c816 to someone who is already familiar with the 6502. Most 6502 code will work on it without changes but there are additional features that you can take advantage of to write even faster and smaller code. This page is intended to highlight those features. ==16-bit registers!== The biggest, most obvious change from the 6502 is that it can do 16-bit operations. To enable this, the accumulator and index registers can change between b..."