summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorToad King2012-06-14 03:23:47 -0400
committerToad King2012-06-14 03:23:47 -0400
commite8bad8c3ca33d6dfa672f2e570eddc3ab4b3a7e6 (patch)
tree3b5ee797171edafe59bc22ec1523554d81bc448e /src
parent6fb0c7a7a53e1eba7a0f5dc5b1ade312a0d76119 (diff)
downloadsnes9x2002-e8bad8c3ca33d6dfa672f2e570eddc3ab4b3a7e6.tar.gz
snes9x2002-e8bad8c3ca33d6dfa672f2e570eddc3ab4b3a7e6.tar.bz2
snes9x2002-e8bad8c3ca33d6dfa672f2e570eddc3ab4b3a7e6.zip
initial libretro changes
Diffstat (limited to 'src')
-rw-r--r--src/dma.cpp2
-rw-r--r--src/memmap.h7
-rw-r--r--src/mode7.cpp89
-rw-r--r--src/mode7_t.h18
-rw-r--r--src/mode7new.cpp75
-rw-r--r--src/mode7prio.cpp106
-rw-r--r--src/mode7prio_t.h19
-rw-r--r--src/port.h10
-rw-r--r--src/rops.h61
-rw-r--r--src/snes9x.h10
-rw-r--r--src/spc700.cpp2
-rw-r--r--src/srtc.h2
-rw-r--r--src/tile16_t.h23
-rw-r--r--src/tile16f_t.h17
14 files changed, 359 insertions, 82 deletions
diff --git a/src/dma.cpp b/src/dma.cpp
index bf102ed..7a6af0f 100644
--- a/src/dma.cpp
+++ b/src/dma.cpp
@@ -127,7 +127,7 @@ void S9xDoDMA (uint8 Channel)
}
else
{
- #if defined (__GP2X__) || defined (__GIZ__) || defined (__WIZ__)
+ #if 1
void *ptr = bsearch (&address, Memory.SDD1Index,
Memory.SDD1Entries, 12, S9xCompareSDD1IndexEntries);
if (ptr)
diff --git a/src/memmap.h b/src/memmap.h
index ca234ea..d146522 100644
--- a/src/memmap.h
+++ b/src/memmap.h
@@ -46,8 +46,11 @@
#ifdef FAST_LSB_WORD_ACCESS
#define READ_WORD(s) (*(uint16 *) (s))
#define READ_DWORD(s) (*(uint32 *) (s))
-#define WRITE_WORD(s, d) (*(uint16 *) (s) = (d)
-#define WRITE_DWORD(s, d) (*(uint32 *) (s) = (d)
+#define WRITE_WORD(s, d) *(uint16 *) (s) = (d)
+#define WRITE_DWORD(s, d) *(uint32 *) (s) = (d)
+#define READ_3WORD(s) ((*(uint32 *) (s)) & 0x00FFFFFF)
+#define WRITE_3WORD(s, d) *(uint16 *) (s) = (uint16) (d), \
+ *((uint8 *) (s) + 2) = (uint8) ((d) >> 16)
#else
#define READ_WORD(s) ( *(uint8 *) (s) |\
(*((uint8 *) (s) + 1) << 8))
diff --git a/src/mode7.cpp b/src/mode7.cpp
index 88b4d89..db65ab9 100644
--- a/src/mode7.cpp
+++ b/src/mode7.cpp
@@ -132,6 +132,8 @@ void DrawBGMode7Background16R3 (uint8 *Screen, int bg, int depth)
xx3 = (startx + HOffset);
+ if (dir == 1)
+ {
asm volatile (
"1: \n"
" ldrb r0, [%[d]] \n"
@@ -158,7 +160,7 @@ void DrawBGMode7Background16R3 (uint8 *Screen, int bg, int depth)
" add %[AA], %[AA], r1 \n"
" movs r0, r0, lsl #2 \n"
" ldrne r1, [%[colors], r0] \n"
- " add %[xx3], %[xx3], %[dir] \n"
+ " add %[xx3], %[xx3], #1 \n"
" strneb %[depth], [%[d]] \n"
" ldr r0, %[dcc] \n"
" strneh r1, [%[p]] \n"
@@ -184,7 +186,7 @@ void DrawBGMode7Background16R3 (uint8 *Screen, int bg, int depth)
"4: \n"
" ldr r0, %[daa] \n"
" ldr r1, %[dcc] \n"
- " add %[xx3], %[xx3], %[dir] \n"
+ " add %[xx3], %[xx3], #1 \n"
" add %[AA], %[AA], r0 \n"
" add %[CC], %[CC], r1 \n"
" add %[p], %[p], #2 \n"
@@ -203,11 +205,91 @@ void DrawBGMode7Background16R3 (uint8 *Screen, int bg, int depth)
[p] "r" (p),
[d] "r" (d),
[depth] "r" (depth),
- [dir] "r" (dir),
+ //[dir] "r" (dir),
[yy3] "r" (yy3),
[xx3] "r" (xx3)
: "r0", "r1", "r3", "cc"
);
+ }
+ else
+ {
+ asm volatile (
+ "1: \n"
+ " ldrb r0, [%[d]] \n"
+ " mov r3, %[AA], asr #18 \n"
+ " cmp %[depth], r0 \n"
+ " bls 4f \n"
+ " orrs r3, r3, %[CC], asr #18 \n"
+ " bne 2f \n"
+ " \n"
+ " mov r3, %[CC], asr #11 \n"
+ " mov r1, %[AA], asr #11 \n"
+ " add r3, r1, r3, lsl #7 \n"
+ " mov r3, r3, lsl #1 \n"
+ " ldrb r3, [%[VRAM], r3] \n"
+ " \n"
+ " and r1, %[CC], #(7 << 8) \n"
+ " add r3, %[VRAM], r3, lsl #7 \n"
+ " and r0, %[AA], #(7 << 8) \n"
+ " add r3, r3, r1, asr #4 \n"
+ " add r3, r3, r0, asr #7 \n"
+ " \n"
+ " ldr r1, %[daa] \n"
+ " ldrb r0, [r3, #1] \n"
+ " add %[AA], %[AA], r1 \n"
+ " movs r0, r0, lsl #2 \n"
+ " ldrne r1, [%[colors], r0] \n"
+ " add %[xx3], %[xx3], #-1 \n"
+ " strneb %[depth], [%[d]] \n"
+ " ldr r0, %[dcc] \n"
+ " strneh r1, [%[p]] \n"
+ " \n"
+ " add %[CC], %[CC], r0 \n"
+ " add %[d], %[d], #1 \n"
+ " add %[p], %[p], #2 \n"
+ " subs %[x], %[x], #1 \n"
+ " bne 1b \n"
+ " b 3f \n"
+ "2: \n"
+ //" and r1, %[yy3], #7 \n"
+ " and r0, %[xx3], #7 \n"
+ //" mov r3, r1, lsl #4 \n"
+ " add r3, %[yy3], r0, lsl #1 \n"
+ " \n"
+ " add r3, %[VRAM], r3 \n"
+ " ldrb r0, [r3, #1] \n"
+ " movs r0, r0, lsl #2 \n"
+ " ldrne r1, [%[colors], r0] \n"
+ " strneb %[depth], [%[d]] \n"
+ " strneh r1, [%[p]] \n"
+ "4: \n"
+ " ldr r0, %[daa] \n"
+ " ldr r1, %[dcc] \n"
+ " add %[xx3], %[xx3], #-1 \n"
+ " add %[AA], %[AA], r0 \n"
+ " add %[CC], %[CC], r1 \n"
+ " add %[p], %[p], #2 \n"
+ " add %[d], %[d], #1 \n"
+ " subs %[x], %[x], #1 \n"
+ " bne 1b \n"
+ "3: \n"
+ :
+ : [x] "r" (Right - Left),
+ [AA] "r" (l->MatrixA * (startx + xx) + BB),
+ [CC] "r" (l->MatrixC * (startx + xx) + DD),
+ [daa] "m" (aa),
+ [dcc] "m" (cc),
+ [VRAM] "r" (Memory.VRAM),
+ [colors] "r" (GFX.ScreenColors),
+ [p] "r" (p),
+ [d] "r" (d),
+ [depth] "r" (depth),
+ //[dir] "r" (dir),
+ [yy3] "r" (yy3),
+ [xx3] "r" (xx3)
+ : "r0", "r1", "r3", "cc"
+ );
+ }
}
}
@@ -487,3 +569,4 @@ void DrawBGMode7Background16R0 (uint8 *Screen, int bg, int depth)
}
+
diff --git a/src/mode7_t.h b/src/mode7_t.h
index 0d066b5..5d67aa6 100644
--- a/src/mode7_t.h
+++ b/src/mode7_t.h
@@ -127,7 +127,8 @@ static void DrawBGMode7Background16R3 (uint8 *Screen, int bg, int depth)
\
" cmp r3, #1 \n"\
" blo 11f \n"\
- " ldrneh r3, [%[p], %[delta]] \n"\
+ " mov r3, #0x200000 \n"\
+ " ldrneh r3, [%[p], r3] \n"\
" ldreq r3, %[fixedcolour] \n"\
\
ROP\
@@ -159,7 +160,8 @@ static void DrawBGMode7Background16R3 (uint8 *Screen, int bg, int depth)
\
" cmp r3, #1 \n"\
" blo 12f \n"\
- " ldrneh r3, [%[p], %[delta]] \n"\
+ " mov r3, #0x200000 \n"\
+ " ldrneh r3, [%[p], r3] \n"\
" ldreq r3, %[fixedcolour] \n"\
\
ROP\
@@ -186,7 +188,6 @@ static void DrawBGMode7Background16R3 (uint8 *Screen, int bg, int depth)
[colors] "r" (GFX.ScreenColors),\
[depth] "r" (depth),\
[yy3] "m" (yy3), \
- [delta] "r" (GFX.Delta << 1),\
[fixedcolour] "m" (fixedColour)\
: "r0", "r1", "r3", "cc"\
);
@@ -317,7 +318,8 @@ static void DrawBGMode7Background16R1R2 (uint8 *Screen, int bg, int depth)
" cmp r3, #1 \n"
" blo 11f \n"
- " ldrneh r3, [%[p], %[delta]] \n"
+ " mov r3, #0x200000 \n"
+ " ldrneh r3, [%[p], r3] \n"
" ldreq r3, %[fixedcolour] \n"
ROP
@@ -342,7 +344,7 @@ static void DrawBGMode7Background16R1R2 (uint8 *Screen, int bg, int depth)
[colors] "r" (GFX.ScreenColors),
[depth] "r" (depth),
//[zdelta] "r" (GFX.DepthDelta),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "m" (fixedColour),
[AndByX] "m" (AndByX),
[AndByY] "m" (AndByY)
@@ -463,7 +465,8 @@ static void DrawBGMode7Background16R0 (uint8 *Screen, int bg, int depth)
" cmp r3, #1 \n"
" blo 11f \n"
- " ldrneh r3, [%[p], %[delta]] \n"
+ " mov r3, #0x200000 \n"
+ " ldrneh r3, [%[p], r3] \n"
" ldreq r3, %[fixedcolour] \n"
ROP
@@ -487,7 +490,7 @@ static void DrawBGMode7Background16R0 (uint8 *Screen, int bg, int depth)
[VRAM] "r" (Memory.VRAM),
[colors] "r" (GFX.ScreenColors),
//[zdelta] "r" (GFX.DepthDelta),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "m" (fixedColour),
[depth] "r" (depth),
[AndByY] "m" (AndByY)
@@ -524,3 +527,4 @@ DEC_FMODE7(ROPNAME)
return;
}
}
+
diff --git a/src/mode7new.cpp b/src/mode7new.cpp
index 33ff453..b71e835 100644
--- a/src/mode7new.cpp
+++ b/src/mode7new.cpp
@@ -127,6 +127,8 @@ void DrawBGMode7Background16NewR3 (uint8 *Screen)
//fprintf(f, "AA:%d, CC:%d, daa: %d, dcc: %d, MA: %d, MB: %d, MC: %d, MD: %d\n", AA, CC, aa, cc, l->MatrixA, l->MatrixB, l->MatrixC, l->MatrixD);
+ if (dir == 1)
+ {
asm volatile (
"1: \n"
" mov r3, %[AA], asr #18 \n"
@@ -149,7 +151,7 @@ void DrawBGMode7Background16NewR3 (uint8 *Screen)
" add %[AA], %[AA], %[daa] \n"
" movs r0, r0, lsl #2 \n"
" ldrne r1, [%[colors], r0] \n"
- " add %[xx3], %[xx3], %[dir] \n"
+ " add %[xx3], %[xx3], #1 \n"
" strneh r1, [%[p]] \n"
" \n"
" add %[CC], %[CC], %[dcc] \n"
@@ -166,7 +168,7 @@ void DrawBGMode7Background16NewR3 (uint8 *Screen)
" add %[AA], %[AA], %[daa] \n"
" movs r0, r0, lsl #2 \n"
" ldrne r1, [%[colors], r0] \n"
- " add %[xx3], %[xx3], %[dir] \n"
+ " add %[xx3], %[xx3], #1 \n"
" strneh r1, [%[p]] \n"
" \n"
" add %[CC], %[CC], %[dcc] \n"
@@ -183,10 +185,74 @@ void DrawBGMode7Background16NewR3 (uint8 *Screen)
[daa] "r" (aa),
[dcc] "r" (cc),
[VRAM] "r" (Memory.VRAM),
- [colors] "r" (GFX.ScreenColors),
- [dir] "r" (dir)
+ [colors] "r" (GFX.ScreenColors)
+ //[dir] "r" (dir)
+ : "r0", "r1", "r3", "cc"
+ );
+ }
+ else
+ {
+ asm volatile (
+ "1: \n"
+ " mov r3, %[AA], asr #18 \n"
+ " orrs r3, r3, %[CC], asr #18 \n"
+ " bne 2f \n"
+ " \n"
+ " mov r3, %[CC], asr #11 \n"
+ " mov r1, %[AA], asr #11 \n"
+ " add r3, r1, r3, lsl #7 \n"
+ " mov r3, r3, lsl #1 \n"
+ " ldrb r3, [%[VRAM], r3] \n"
+ " \n"
+ " and r1, %[CC], #(7 << 8) \n"
+ " add r3, %[VRAM], r3, lsl #7 \n"
+ " and r0, %[AA], #(7 << 8) \n"
+ " add r3, r3, r1, asr #4 \n"
+ " add r3, r3, r0, asr #7 \n"
+ " \n"
+ " ldrb r0, [r3, #1] \n"
+ " add %[AA], %[AA], %[daa] \n"
+ " movs r0, r0, lsl #2 \n"
+ " ldrne r1, [%[colors], r0] \n"
+ " add %[xx3], %[xx3], #-1 \n"
+ " strneh r1, [%[p]] \n"
+ " \n"
+ " add %[CC], %[CC], %[dcc] \n"
+ " add %[p], %[p], #2 \n"
+ " subs %[x], %[x], #1 \n"
+ " bne 1b \n"
+ " b 3f \n"
+ "2: \n"
+ " and r0, %[xx3], #7 \n"
+ " add r3, %[yy3], r0, lsl #1 \n"
+ " \n"
+ " add r3, %[VRAM], r3 \n"
+ " ldrb r0, [r3, #1] \n"
+ " add %[AA], %[AA], %[daa] \n"
+ " movs r0, r0, lsl #2 \n"
+ " ldrne r1, [%[colors], r0] \n"
+ " add %[xx3], %[xx3], #-1 \n"
+ " strneh r1, [%[p]] \n"
+ " \n"
+ " add %[CC], %[CC], %[dcc] \n"
+ " add %[p], %[p], #2 \n"
+ " subs %[x], %[x], #1 \n"
+ " bne 1b \n"
+ "3: \n"
+ : [xx3] "+r" (xx3),
+ [x] "+r" (width),
+ [p] "+r" (p),
+ [AA] "+r" (AA),
+ [CC] "+r" (CC)
+ : [yy3] "r" (yy3),
+ [daa] "r" (aa),
+ [dcc] "r" (cc),
+ [VRAM] "r" (Memory.VRAM),
+ [colors] "r" (GFX.ScreenColors)
+ //[dir] "r" (dir)
: "r0", "r1", "r3", "cc"
);
+ }
}
}
@@ -437,3 +503,4 @@ uint8 *z;
}
+
diff --git a/src/mode7prio.cpp b/src/mode7prio.cpp
index e4878fd..c149eb5 100644
--- a/src/mode7prio.cpp
+++ b/src/mode7prio.cpp
@@ -126,6 +126,9 @@ void DrawBGMode7Background16PrioR3 (uint8 *Screen, int bg)
cc = l->MatrixC;
dir = 1;
}
+
+ if (dir == 1)
+ {
asm volatile (
"1: \n"
" mov r3, %[AA], lsr #18 \n"
@@ -160,7 +163,7 @@ void DrawBGMode7Background16PrioR3 (uint8 *Screen, int bg)
" movs r0, r0, lsl #2 \n"
" add %[AA], %[AA], r1 \n"
" ldrne r1, [%[colors], r0] \n"
- " add %[xx3], %[xx3], %[dir] \n"
+ " add %[xx3], %[xx3], #1 \n"
" strneb %[depth], [%[d]] \n"
" ldr r0, %[dcc] \n"
" strneh r1, [%[p]] \n"
@@ -194,7 +197,7 @@ void DrawBGMode7Background16PrioR3 (uint8 *Screen, int bg)
"4: \n"
" ldr r0, %[daa] \n"
" ldr r1, %[dcc] \n"
- " add %[xx3], %[xx3], %[dir] \n"
+ " add %[xx3], %[xx3], #1 \n"
" add %[AA], %[AA], r0 \n"
" add %[CC], %[CC], r1 \n"
" add %[p], %[p], #2 \n"
@@ -213,11 +216,107 @@ void DrawBGMode7Background16PrioR3 (uint8 *Screen, int bg)
[p] "r" (p),
[d] "r" (d),
[depth] "r" (depth),
- [dir] "r" (dir),
+ //[dir] "r" (dir),
[yy3] "r" (yy + CentreY),
[xx3] "r" (startx + HOffset)
: "r0", "r1", "r3", "cc"
);
+ }
+ else
+ {
+ asm volatile (
+ "1: \n"
+ " mov r3, %[AA], lsr #18 \n"
+ " orrs r3, r3, %[CC], lsr #18 \n"
+ " bne 2f \n"
+ " \n"
+ " mov r3, %[CC], lsr #11 \n"
+ " mov r1, %[AA], lsr #11 \n"
+ " add r3, r1, r3, lsl #7 \n"
+ " mov r3, r3, lsl #1 \n"
+ " ldrb r3, [%[VRAM], r3] \n"
+ " \n"
+ " mov r1, %[CC], lsr #8 \n"
+ " mov r0, %[AA], lsr #8 \n"
+ " \n"
+ " add r3, %[VRAM], r3, lsl #7 \n"
+ " \n"
+ " and r1, r1, #7 \n"
+ " and r0, r0, #7 \n"
+ " add r3, r3, r1, lsl #4 \n"
+ " add r3, r3, r0, lsl #1 \n"
+ " \n"
+ " ldrb r0, [r3, #1] \n"
+ " ldrb r3, [%[d]] \n"
+ " tst r0, #0x80 \n"
+ " andeq r1, %[depth], #0xff \n"
+ " mov r1, %[depth], lsr #8 \n"
+ " cmp r1, r3 \n"
+ " bls 4f \n"
+
+ " ldr r1, %[daa] \n"
+ " movs r0, r0, lsl #2 \n"
+ " add %[AA], %[AA], r1 \n"
+ " ldrne r1, [%[colors], r0] \n"
+ " add %[xx3], %[xx3], #-1 \n"
+ " strneb %[depth], [%[d]] \n"
+ " ldr r0, %[dcc] \n"
+ " strneh r1, [%[p]] \n"
+ " \n"
+ " add %[CC], %[CC], r0 \n"
+ " add %[d], %[d], #1 \n"
+ " add %[p], %[p], #2 \n"
+ " subs %[x], %[x], #1 \n"
+ " bne 1b \n"
+ " b 3f \n"
+ "2: \n"
+ " and r1, %[yy3], #7 \n"
+ " and r0, %[xx3], #7 \n"
+ " mov r3, r1, lsl #4 \n"
+ " add r3, r3, r0, lsl #1 \n"
+ " \n"
+ " add r3, %[VRAM], r3 \n"
+
+ " ldrb r0, [r3, #1] \n"
+ " ldrb r3, [%[d]] \n"
+ " tst r0, #0x80 \n"
+ " andeq r1, %[depth], #0xff \n"
+ " mov r1, %[depth], lsr #8 \n"
+ " cmp r1, r3 \n"
+ " bls 4f \n"
+
+ " movs r0, r0, lsl #2 \n"
+ " ldrne r1, [%[colors], r0] \n"
+ " strneb %[depth], [%[d]] \n"
+ " strneh r1, [%[p]] \n"
+ "4: \n"
+ " ldr r0, %[daa] \n"
+ " ldr r1, %[dcc] \n"
+ " add %[xx3], %[xx3], #-1 \n"
+ " add %[AA], %[AA], r0 \n"
+ " add %[CC], %[CC], r1 \n"
+ " add %[p], %[p], #2 \n"
+ " add %[d], %[d], #1 \n"
+ " subs %[x], %[x], #1 \n"
+ " bne 1b \n"
+ "3: \n"
+ :
+ : [x] "r" (Right - Left),
+ [AA] "r" (l->MatrixA * (startx + xx) + BB),
+ [CC] "r" (l->MatrixC * (startx + xx) + DD),
+ [daa] "m" (aa),
+ [dcc] "m" (cc),
+ [VRAM] "r" (Memory.VRAM),
+ [colors] "r" (GFX.ScreenColors),
+ [p] "r" (p),
+ [d] "r" (d),
+ [depth] "r" (depth),
+ //[dir] "r" (dir),
+ [yy3] "r" (yy + CentreY),
+ [xx3] "r" (startx + HOffset)
+ : "r0", "r1", "r3", "cc"
+ );
+ }
}
}
@@ -501,3 +600,4 @@ void DrawBGMode7Background16PrioR0 (uint8 *Screen, int bg)
}
+
diff --git a/src/mode7prio_t.h b/src/mode7prio_t.h
index 24d0062..8f1e7e4 100644
--- a/src/mode7prio_t.h
+++ b/src/mode7prio_t.h
@@ -128,7 +128,8 @@ static void DrawBGMode7Background16R3 (uint8 *Screen, int bg)
" cmp r3, #1 \n"
" blo 11f \n"
- " addne r0, %[delta], %[delta] \n"
+ " mov r3, #0x200000 \n"
+ " addne r0, r3, r3 \n"
" ldreq r3, %[fixedcolour] \n"
ROP
@@ -170,7 +171,8 @@ static void DrawBGMode7Background16R3 (uint8 *Screen, int bg)
" cmp r3, #1 \n"
" blo 12f \n"
- " ldrneh r3, [%[p], %[delta]] \n"
+ " mov r3, #0x200000 \n"
+ " ldrneh r3, [%[p], r3] \n"
" ldreq r3, %[fixedcolour] \n"
ROP
@@ -201,7 +203,7 @@ static void DrawBGMode7Background16R3 (uint8 *Screen, int bg)
[dir] "m" (dir),
[yy3] "m" (yy3),
//[zdelta] "r" (GFX.DepthDelta),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "m" (fixedColour),
[xx3] "r" (xx3)
: "r0", "r1", "r3", "cc"
@@ -324,7 +326,8 @@ static void DrawBGMode7Background16R1R2 (uint8 *Screen, int bg)
" cmp r3, #1 \n"
" blo 11f \n"
- " ldrneh r3, [%[p], %[delta]] \n"
+ " mov r3, #0x200000 \n"
+ " ldrneh r3, [%[p], r3] \n"
" ldreq r3, %[fixedcolour] \n"
ROP
@@ -349,7 +352,7 @@ static void DrawBGMode7Background16R1R2 (uint8 *Screen, int bg)
[d] "r" (d-1),
[depth] "r" (depth),
//[zdelta] "r" (GFX.DepthDelta),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "m" (fixedColour),
[AndByX] "m" (AndByX),
[AndByY] "m" (AndByY)
@@ -469,7 +472,8 @@ static void DrawBGMode7Background16R0 (uint8 *Screen, int bg)
" cmp r3, #1 \n"
" blo 11f \n"
- " ldrneh r3, [%[p], %[delta]] \n"
+ " mov r3, #0x200000 \n"
+ " ldrneh r3, [%[p], r3] \n"
" ldreq r3, %[fixedcolour] \n"
ROP
@@ -495,7 +499,7 @@ static void DrawBGMode7Background16R0 (uint8 *Screen, int bg)
[p] "r" (p),
[d] "r" (d-1),
//[zdelta] "r" (GFX.DepthDelta),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "m" (fixedColour),
[depth] "r" (depth),
[AndByY] "m" (AndByY)
@@ -533,3 +537,4 @@ DEC_FMODE7(ROPNAME)
}
}
+
diff --git a/src/port.h b/src/port.h
index 96a3ac1..de64f9e 100644
--- a/src/port.h
+++ b/src/port.h
@@ -57,7 +57,7 @@ I can't take it anymore, it's too convoluted. So I've commented out the entire
** _SNESPPC DEFINES
*/
-#ifdef __GIZ__
+#if 1
//Title
#define TITLE "Snes9x"
@@ -72,6 +72,7 @@ I can't take it anymore, it's too convoluted. So I've commented out the entire
typedef unsigned char bool8;
typedef unsigned char uint8;
typedef unsigned short uint16;
+typedef unsigned int bool32;
typedef unsigned int uint32;
typedef signed char int8;
typedef short int16;
@@ -105,8 +106,8 @@ typedef short int16_32;
#define _MAX_DRIVE 1
#define _MAX_FNAME PATH_MAX
#define _MAX_EXT PATH_MAX
-#define PATH_MAX 1024
-#define _MAX_PATH (1024)
+//#define PATH_MAX 1024
+#define _MAX_PATH PATH_MAX
//True/False Defines
#define TRUE 1
@@ -122,7 +123,7 @@ typedef short int16_32;
#define LSB_FIRST
#define STATIC static
#define FASTCALL
-#define PIXEL_FORMAT RGB565
+#define PIXEL_FORMAT RGB555
#define CHECK_SOUND()
#define VOID void
#define CPU_SHUTDOWN
@@ -132,6 +133,7 @@ typedef short int16_32;
#define ALIGN_BY_ONE __attribute__ ((aligned (1), packed))
#define LSB_FIRST
#undef FAST_LSB_WORD_ACCESS
+#define SUPER_FX
#ifdef ASMCPU
#define ASM_SPC700
#endif
diff --git a/src/rops.h b/src/rops.h
index e751a58..dc5409f 100644
--- a/src/rops.h
+++ b/src/rops.h
@@ -6,7 +6,7 @@
*/
// -------------
-// RGB_565
+// RGB_555
// a.red = a.red - b.red
// a.blue = a.blue - b.blue
// a.green = a.green - b.green
@@ -24,21 +24,21 @@
" biceq " #a ", " #a ", #0b01111100000000000 \n"
*/
#define ROP_SUB(a, b) \
- " bics " #b ", " #b ", #0b00000100000100000 \n"\
+ " bics " #b ", " #b ", #0b00000010000100000 \n"\
" beq 999f \n"\
- " orr " #a ", " #a ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #0b00000010000100000 \n"\
" orr " #a ", " #a ", #(1 << 31) \n"\
" subs " #a ", " #a ", " #b " \n"\
- " bicpl " #a ", " #a ", #0b01111100000000000 \n"\
+ " bicpl " #a ", " #a ", #0b00111110000000000 \n"\
" tst " #a ", #0b00000000000100000 \n"\
" biceq " #a ", " #a ", #0b00000000000011111 \n"\
- " tst " #a ", #0b00000100000000000 \n"\
- " biceq " #a ", " #a ", #0b00000011111100000 \n"\
+ " tst " #a ", #0b00000010000000000 \n"\
+ " biceq " #a ", " #a ", #0b00000001111100000 \n"\
"999:\n"
// -------------
-// RGB_565
+// RGB_555
// if ZF set do ROP_SUB, else:
// a.red = (a.red - b.red) / 2
// a.blue = (a.blue - b.blue) / 2
@@ -64,60 +64,60 @@
#define ROP_SUB1_2(a, b) \
" movne " #a ", " #a ", lsr #1 \n"\
- " bicne " #a ", " #a ", #0b00000010000010000 \n"\
+ " bicne " #a ", " #a ", #0b00000001000010000 \n"\
" movne " #b ", " #b ", lsr #1 \n"\
- " bicne " #b ", " #b ", #0b00000010000010000 \n"\
+ " bicne " #b ", " #b ", #0b00000001000010000 \n"\
\
- " bics " #b ", " #b ", #0b00000100000100000 \n"\
+ " bics " #b ", " #b ", #0b00000010000100000 \n"\
" beq 999f \n"\
- " orr " #a ", " #a ", #0b00000100000100000 \n"\
+ " orr " #a ", " #a ", #0b00000010000100000 \n"\
" orr " #a ", " #a ", #(1 << 31) \n"\
" subs " #a ", " #a ", " #b " \n"\
- " bicpl " #a ", " #a ", #0b01111100000000000 \n"\
+ " bicpl " #a ", " #a ", #0b00111110000000000 \n"\
" tst " #a ", #0b00000000000100000 \n"\
" biceq " #a ", " #a ", #0b00000000000011111 \n"\
- " tst " #a ", #0b00000100000000000 \n"\
- " biceq " #a ", " #a ", #0b00000011111100000 \n"\
+ " tst " #a ", #0b00000010000000000 \n"\
+ " biceq " #a ", " #a ", #0b00000001111100000 \n"\
"999:\n"
// -------------
-// RGB_565
+// RGB_555
// a.red = a.red + b.red
// a.blue = a.blue + b.blue
// a.green = a.green + b.green
#define ROP_ADD(a, b) \
- " bics " #b ", " #b ", #0b00000100000100000 \n"\
+ " bics " #b ", " #b ", #0b00000010000100000 \n"\
" beq 999f \n"\
- " bic " #a ", " #a ", #0b00000100000100000 \n"\
+ " bic " #a ", " #a ", #0b00000010000100000 \n"\
" add " #a ", " #a ", " #b " \n"\
" tst " #a ", #0b00000000000100000 \n"\
" orrne " #a ", " #a ", #0b00000000000011111 \n"\
- " tst " #a ", #0b00000100000000000 \n"\
- " orrne " #a ", " #a ", #0b00000011111100000 \n"\
- " tst " #a ", #0b10000000000000000 \n"\
- " orrne " #a ", " #a ", #0b01111100000000000 \n"\
+ " tst " #a ", #0b00000010000000000 \n"\
+ " orrne " #a ", " #a ", #0b00000001111100000 \n"\
+ " tst " #a ", #0b01000000000000000 \n"\
+ " orrne " #a ", " #a ", #0b00111110000000000 \n"\
"999:\n"
// -------------
-// RGB_565
+// RGB_555
// if ZF set do ROP_ADD, else:
// a.red = (a.red + b.red) / 2
// a.blue = (a.blue + b.blue) / 2
// a.green = (a.green + b.green) / 2
#define ROP_ADD1_2(a, b) \
- " bic " #a ", " #a ", #0b00000100000100000 \n"\
- " bicne " #a ", " #a ", #0b00001000001000000 \n"\
- " bic " #b ", " #b ", #0b00000100000100000 \n"\
- " bicne " #b ", " #b ", #0b00001000001000000 \n"\
+ " bic " #a ", " #a ", #0b00000010000100000 \n"\
+ " bicne " #a ", " #a ", #0b00000100001000000 \n"\
+ " bic " #b ", " #b ", #0b00000010000100000 \n"\
+ " bicne " #b ", " #b ", #0b00000100001000000 \n"\
" add " #a ", " #a ", " #b " \n"\
" movne " #a ", " #a ", lsr #1 \n"\
" tst " #a ", #0b00000000000100000 \n"\
" orrne " #a ", " #a ", #0b00000000000011111 \n"\
- " tst " #a ", #0b00000100000000000 \n"\
- " orrne " #a ", " #a ", #0b00000011111100000 \n"\
- " tst " #a ", #0b10000000000000000 \n"\
- " orrne " #a ", " #a ", #0b01111100000000000 \n"
+ " tst " #a ", #0b00000010000000000 \n"\
+ " orrne " #a ", " #a ", #0b00000001111100000 \n"\
+ " tst " #a ", #0b01000000000000000 \n"\
+ " orrne " #a ", " #a ", #0b00111110000000000 \n"
typedef struct {
@@ -166,3 +166,4 @@ void doRaster(ROPSTRUCT *rop);
bool wouldRasterAlterStatus(ROPSTRUCT *rop);
#endif
+
diff --git a/src/snes9x.h b/src/snes9x.h
index be7bfd0..0201ad9 100644
--- a/src/snes9x.h
+++ b/src/snes9x.h
@@ -61,7 +61,15 @@
#define ROM_NAME_LEN 23
-#ifdef ZLIB
+#ifdef __LIBRETRO__
+#include "../libretro/memstream.h"
+#define STREAM memstream_t *
+#define READ_STREAM(p, l, s) memstream_read(s, p, l)
+#define WRITE_STREAM(p, l, s) memstream_write(s, p, l)
+#define OPEN_STREAM(f, m) memstream_open()
+#define CLOSE_STREAM(s) memstream_close(s)
+#define SEEK_STREAM(p,r,s) memstream_seek(p,r,s)
+#elif defined(ZLIB)
//#ifndef __WIN32__
#include "zlib.h"
//#endif
diff --git a/src/spc700.cpp b/src/spc700.cpp
index 00dd4f8..637d2db 100644
--- a/src/spc700.cpp
+++ b/src/spc700.cpp
@@ -239,6 +239,7 @@ APUSetZN8 ((uint8) Int16);
IAPU.Address = *(IAPU.DirectPage + OP1) + \
(*(IAPU.DirectPage + OP1 + 1) << 8) + \
IAPU.YA.B.Y;
+#endif
void Apu00 ()
{
@@ -2505,5 +2506,4 @@ void (*S9xApuOpcodes[256]) (void) =
ApuF8, ApuF9, ApuFA, ApuFB, ApuFC, ApuFD, ApuFE, ApuFF
};
-#endif
diff --git a/src/srtc.h b/src/srtc.h
index a4e8abf..32437f5 100644
--- a/src/srtc.h
+++ b/src/srtc.h
@@ -42,7 +42,7 @@
#define _srtc_h_
#if !defined(_SNESPPC) && !defined(__GIZ__) && !defined(__GP2X__) && !defined(__WIZ__)
-#include <time.h>
+//#include <time.h>
#endif
#define MAX_RTC_INDEX 0xC
diff --git a/src/tile16_t.h b/src/tile16_t.h
index db1916e..f4a0a57 100644
--- a/src/tile16_t.h
+++ b/src/tile16_t.h
@@ -210,7 +210,8 @@ DEC_DRAWNOZ(ROPNAME)
\
" cmp r8, #1 \n"\
" blo 4f \n"\
- " ldrneh r8, [%[screen], %[delta]] \n"\
+ " mov r8, #0x200000 \n"\
+ " ldrneh r8, [%[screen], r8] \n"\
" moveq r8, %[fixedcolour] \n"\
\
ROP \
@@ -243,7 +244,8 @@ DEC_DRAWNOZ(ROPNAME)
\
" cmp r8, #1 \n"\
" blo 4f \n"\
- " ldrneh r8, [%[screen], %[delta]] \n"\
+ " mov r8, #0x200000 \n"\
+ " ldrneh r8, [%[screen], r8] \n"\
" moveq r8, %[fixedcolour] \n"\
\
ROP \
@@ -282,7 +284,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -306,7 +308,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -332,7 +334,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -358,7 +360,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -405,7 +407,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -437,7 +439,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -471,7 +473,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -503,7 +505,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (GFX.FixedColour),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -517,3 +519,4 @@ if (Tile & V_FLIP){
}
}
}
+
diff --git a/src/tile16f_t.h b/src/tile16f_t.h
index 70b5cff..493f76f 100644
--- a/src/tile16f_t.h
+++ b/src/tile16f_t.h
@@ -103,7 +103,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -127,7 +127,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -153,7 +153,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -179,7 +179,7 @@ DEC_DRAW(ROPNAME)
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[screen] "r" ((uint16 *) GFX.S + Offset),
[depth] "r" (GFX.ZBuffer + Offset),
@@ -226,7 +226,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -258,7 +258,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -292,7 +292,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -324,7 +324,7 @@ if (Tile & V_FLIP){
: [gfx_z1] "r" (GFX.Z1),
[gfx_z2] "r" (GFX.Z2),
[colors] "r" (GFX.ScreenColors),
- [delta] "r" (GFX.Delta << 1),
+ //[delta] "r" (GFX.Delta << 1),
[fixedcolour] "r" (FIXEDCOLOUR),
[width] "r" (Width),
[screen] "r" ((uint16 *) GFX.S + Offset),
@@ -338,3 +338,4 @@ if (Tile & V_FLIP){
}
}
}
+