User contributions for NovaSquirrel
From SNESdev Wiki
Jump to navigationJump to search
22 May 2022
- 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..."