Coding Questions and other Quandaries
#57
BTW, I saw your post about Army Men code after I posted the Wii bowling thing.
I'll check it out since I'll have some down time for the weekend.

But as far as the bowling goes:

"You should never have to load and store with an offset of zero,
Get rid of the 'ori r11, r11, 0x6000'
Update the load and stores using a 0x6000 offset."

Ok. I didn't have to, I did it because it just seemed easy and the logical thing to do [noob].
But I get what you're saying.

Regarding the pin configuration with all of the pins present:

"Since every byte here is the same written value and it appears the addresses are spaced out equally, you could use an '08' Gecko Codetype for a Serial Write. Will chop that down to just 2 lines of compiled code."

Does that mean I'm SOL in shortening the amount of writes with pin configurations that do not have the same written value?

-----------------------------------------------------------------------------------------------------------

I'll try to explain this part better:


addi r12, r12, 0x1000 #If (-) button pressed, adds 0x1000 to value currently held in monitor address
stw r12, 0(r11) #ASM Stores increase in (-) button strokes

"Why are you adding 0x1000 to 0x80AF60000 when the 16-bit If Statements you have are checking for Hex digit values at 0x80AF6000 (0x1, 0x2, 0x3, 0x4 etc)?
I'm geniunely confused by your code, maybe because it's written in such a weird fashion.

As far as weird, I love Frank Zappa bwaahaahaahaahaa...
You ain't seen nothin' yet Smile

so the addi/store command is storing the WORD 0x00001000 (and its additions) at 0X80AF6000

00001000
00002000
00003000
etc.
My conditionals were originally set up to compare the half word at 80AF6000
And when reaching 0xC000 (end of splits configurations), writing 0x1000 at the monitor address to go back to the top of the configurations list.

this is how my conditionals were originally written:

28AF6002 00001000
...write split configuration #
28AF6002 00002000
...write split configuration #

But because of the fast cycle due to the hijacking of the control line read cycle (writing to the monitor address), pressing the (-) button causes the 0x1000 to add up very quickly.
Again, there is a lag between the conditional being met and the actual pin placement.

without the conditional "write 0x1000 at the monitor address when reaching 0xC000 (end of splits configurations),

80AF6000

will go 0x00001000 -> 0x0000F000

and then

0x00011000 -> 0x0001F000
0x00021000 -> 0x0002F000

and so on.

So to slow the cycling down and adjust for the conditional/pin placement lag, I changed the conditionals to monitor the upper half-word of 80AF6000, like so:

28AF6000 00000001
...write split configuration #
28AF6000 00000002
...write split configuration #

I just have to adjust the conditionals values a wee bit to get it perfect.

Hope that makes sense.


"For diff button combo for each pin configuration, you can do this (no C2 ASM required)..."

That was how I did it originally, but trying to remember the button combos was a pain.


Thanks for the input!!!!!!
Reply


Messages In This Thread
RE: Coding Questions and other Quandaries - by Hackwiz - 12-22-2021, 01:36 PM

Forum Jump:


Users browsing this thread: 1 Guest(s)