It is currently Mon Oct 23, 2017 12:08 pm

All times are UTC - 7 hours



Forum rules


Related:



Post new topic Reply to topic  [ 291 posts ]  Go to page Previous  1 ... 16, 17, 18, 19, 20  Next
Author Message
PostPosted: Wed Aug 09, 2017 7:13 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2295
What do you want to know about first?


Top
 Profile  
 
PostPosted: Wed Aug 09, 2017 9:20 pm 
Offline
User avatar

Joined: Mon Sep 15, 2014 4:35 pm
Posts: 3074
Location: Nacogdoches, Texas
First, get the hell away from WLA. :lol:


Top
 Profile  
 
PostPosted: Wed Aug 09, 2017 9:28 pm 
Offline
User avatar

Joined: Mon Sep 15, 2014 4:35 pm
Posts: 3074
Location: Nacogdoches, Texas
93143 wrote:
Hopefully once I'm out of grad school things will loosen up a bit...

I'll be a high school senior this year, so I should have more free time. The next year, however...


Top
 Profile  
 
PostPosted: Wed Aug 09, 2017 10:45 pm 
Offline

Joined: Tue Mar 01, 2016 8:22 pm
Posts: 21
psycopathicteen wrote:
What do you want to know about first?

That's my exact problem. I don't know what I need to know and what order to learn about it in. I need some sort of starting place that I could work myself up from there.

Espozo wrote:
First, get the hell away from WLA. :lol:

I've heard many negative things about WLA. Is it just bad syntax or what? I already have ca65 on my system, and was messing around with sneskit earlier. What's your personal preference?


Top
 Profile  
 
PostPosted: Thu Aug 10, 2017 1:53 am 
Offline
User avatar

Joined: Wed Feb 13, 2008 9:10 am
Posts: 578
Location: Estonia, Rapla city (50 and 60Hz compatible :P)
I suppose PPU access comes first, then you can configure the registers to a state that allows things to become visible. You'll have to load in a palette so you can see anything at all, then load some tiles to VRAM and then write to tilemap area in VRAM to show some of the GFX on the screen. You can use an emulator with debugging functions to see that you're doing things right, no$sns seems to be pretty easy to get going with on that regard. you'll see register states, what's in the palettes, VRAM and sprite list.

_________________
http://www.tmeeco.eu


Top
 Profile  
 
PostPosted: Thu Aug 10, 2017 5:09 am 
Offline
User avatar

Joined: Tue Apr 05, 2016 5:25 pm
Posts: 124
My personal recommendation is to first start out by learning 65816 assembly. Play around with basic operations and store results of arithmetic in RAM, then look to see if it's the value you expected. Use a debugging emulator like bsnes-plus. Having a memory viewer is going to be very useful because you'll be able to learn the language, experiment, and fix bugs without having to display stuff on-screen. Breakpoints and debugger step-thru are also great to have because you can see step by step what your code is doing. Just remember to turn on auto-refresh in the memory viewer so you can see any changes in RAM.

_________________
SNES NTSC 2/1/3 1CHIP | serial number UN318588627


Top
 Profile  
 
PostPosted: Fri Aug 11, 2017 12:43 pm 
Offline
User avatar

Joined: Fri May 08, 2015 7:17 pm
Posts: 1787
Location: DIGDUG
Quote:
I don't know what I need to know and what order to learn about it in. I need some sort of starting place that I could work myself up from there.


tepples has an example code on his website. https://pineight.com/snes/

And baz's tutorials on the superfamicom wiki.

I also recommend ca65. The .SMART feature alone is worth it. It keeps track of REP and SEP instructions and sets the assembler accordingly.

_________________
nesdoug.com -- blog/tutorial on programming for the NES


Top
 Profile  
 
PostPosted: Fri Aug 11, 2017 1:44 pm 
Offline
User avatar

Joined: Tue Apr 05, 2016 5:25 pm
Posts: 124
Both WLA and ca65 have a smart feature. But ca65 has generally been a lot more reliable for me, with less surprises in the form of detecting the wrong register size without warning about it. Only thing I had to do for ca65 was put rep #$30 at the top of source files so it knows that 16-bit is intended as the default.

_________________
SNES NTSC 2/1/3 1CHIP | serial number UN318588627


Top
 Profile  
 
PostPosted: Fri Aug 11, 2017 3:44 pm 
Offline

Joined: Tue Mar 01, 2016 8:22 pm
Posts: 21
dougeff wrote:
Quote:
I don't know what I need to know and what order to learn about it in. I need some sort of starting place that I could work myself up from there.


tepples has an example code on his website. https://pineight.com/snes/

And baz's tutorials on the superfamicom wiki.

I also recommend ca65. The .SMART feature alone is worth it. It keeps track of REP and SEP instructions and sets the assembler accordingly.

I'll definitely check out tepples's template. Seems like just the snes.inc alone is amazingly helpful.

Also is there any difficulty difference between coding for HiROM or LoROM?

TmEE wrote:
I suppose PPU access comes first, then you can configure the registers to a state that allows things to become visible. You'll have to load in a palette so you can see anything at all, then load some tiles to VRAM and then write to tilemap area in VRAM to show some of the GFX on the screen. You can use an emulator with debugging functions to see that you're doing things right, no$sns seems to be pretty easy to get going with on that regard. you'll see register states, what's in the palettes, VRAM and sprite list.

I've taken a liking to bsnes-plus, so I'm probably going to use that (in addition to real hardware with an SD2SNES). If it gives me trouble, I'll keep nocash's emulator in mind.

HihiDanni wrote:
My personal recommendation is to first start out by learning 65816 assembly. Play around with basic operations and store results of arithmetic in RAM, then look to see if it's the value you expected. Use a debugging emulator like bsnes-plus. Having a memory viewer is going to be very useful because you'll be able to learn the language, experiment, and fix bugs without having to display stuff on-screen. Breakpoints and debugger step-thru are also great to have because you can see step by step what your code is doing. Just remember to turn on auto-refresh in the memory viewer so you can see any changes in RAM.

I'll try writing some functions using tepples's template as a base and see what the results are. Experimenting with existing things tends to be the way I learn best, although I will eventually want to learn how to do everything from scratch, but baby steps I suppose..


Top
 Profile  
 
PostPosted: Fri Aug 11, 2017 4:08 pm 
Online

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6297
Location: Seattle
syboxez wrote:
Also is there any difficulty difference between coding for HiROM or LoROM?
Not particularly.

With Mode $20 ("LoROM"), it's easier to decide to keep the bank registers "B" and "K" the same; with mode $21 ("HiROM") you'll more often have to let them be them different. There's no particular advantage to keeping them same, and both the direct page, stack, and vectors always have to be in bank 0 regardless.

Mode $21 is a little more convenient for just shoving giant chunks of uncompressed data around, since then your memory map doesn't have gaps and it makes pointer math simpler. But the DMA unit can't cross banks anyway, so you may have to split things into multiple transfers regardless.


Top
 Profile  
 
PostPosted: Fri Aug 11, 2017 5:16 pm 
Offline
User avatar

Joined: Mon Jan 23, 2006 7:47 am
Posts: 70
syboxez wrote:
Also is there any difficulty difference between coding for HiROM or LoROM?

LoROM and HiROM don't actually exist. You can create custom manifests with higan, and as long as they follow the requirements of the base unit you can put your data anywhere you want. You don't even have to fill all the fields in the internal header, except for the vectors. (Of course other emulators might then have difficulties detecting the layout.)


Top
 Profile  
 
PostPosted: Fri Aug 11, 2017 6:59 pm 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19120
Location: NE Indiana, USA (NTSC)
"PRG ROM skips CPU A15" and "PRG ROM uses CPU A15" certainly exist. Yes, I know more mappings are possible, but those are the basic classes of mapping that your PowerPak, EverDrive, or SD2SNES is likely to support.

The latest version of the template is at https://github.com/pinobatch/lorom-template


Top
 Profile  
 
PostPosted: Sat Aug 12, 2017 7:47 am 
Offline
User avatar

Joined: Tue Apr 05, 2016 5:25 pm
Posts: 124
syboxez wrote:
Also is there any difficulty difference between coding for HiROM or LoROM?

HiROM is more complex, but it lets you store a consecutive run of 64kB of data (which, to my knowledge, can't really be done in LoROM).

Note however that even if you're using HiROM, you can still do LoROM style accesses by using the LoROM banks, which I do in my own engine for performance reasons - I'm putting most of my code in bank 80 rather than c0, but data goes in c2, c3, etc.

I suggest sticking with LoROM for now.

_________________
SNES NTSC 2/1/3 1CHIP | serial number UN318588627


Top
 Profile  
 
PostPosted: Mon Aug 14, 2017 7:50 pm 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2295
If someone is making an engine, I think there should be a folder labelled "complicated black magic stuff" so that beginners don't have to read it.


Top
 Profile  
 
PostPosted: Fri Aug 25, 2017 11:31 am 
Offline

Joined: Wed May 19, 2010 6:12 pm
Posts: 2295
I can't believe I didn't think of this before, but I think it would be a good idea to emulate an arcade style sprite system with 16384 CHRs, and use a routine that allocates them to SNES's VRAM. Of course it might exceed vblank DMA limit, but you can come up with a separate routine for animation scheduling.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 291 posts ]  Go to page Previous  1 ... 16, 17, 18, 19, 20  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 8 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group