Skip to content

Commit 4dd4397

Browse files
committed
Bugfixes and mod support
1 parent be17031 commit 4dd4397

File tree

8 files changed

+123
-75
lines changed

8 files changed

+123
-75
lines changed

source/cl_main.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ cvar_t lookspring = {"lookspring","0", true};
3535
cvar_t lookstrafe = {"lookstrafe","0", true};
3636
cvar_t sensitivity = {"sensitivity","3", true};
3737

38+
#ifdef _3DS
39+
cvar_t csensitivity = {"csensitivity","3", true};
40+
#endif
41+
3842
cvar_t m_pitch = {"m_pitch","0.022", true};
3943
cvar_t m_yaw = {"m_yaw","0.022", true};
4044
cvar_t m_forward = {"m_forward","1", true};
@@ -739,6 +743,10 @@ void CL_Init (void)
739743
Cvar_RegisterVariable (&lookstrafe);
740744
Cvar_RegisterVariable (&sensitivity);
741745

746+
#ifdef _3DS
747+
Cvar_RegisterVariable (&csensitivity);
748+
#endif
749+
742750
Cvar_RegisterVariable (&m_pitch);
743751
Cvar_RegisterVariable (&m_yaw);
744752
Cvar_RegisterVariable (&m_forward);

source/client.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,10 @@ extern cvar_t m_yaw;
268268
extern cvar_t m_forward;
269269
extern cvar_t m_side;
270270

271+
#ifdef _3DS
272+
extern cvar_t csensitivity;
273+
#endif
274+
271275

272276
#define MAX_TEMP_ENTITIES 64 // lightning bolts, etc
273277
#define MAX_STATIC_ENTITIES 128 // torches, etc

source/in_ctr.c

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,31 @@ void IN_Move (usercmd_t *cmd)
5858

5959
hidCircleRead(&circlepad);
6060
//CirclePad deadzone to fix ghost movements
61-
if(abs(circlepad.dy) > 15)
62-
cmd->forwardmove += m_forward.value * circlepad.dy * 2; //FIX ME: allow circlepad sensitivity to be changed
63-
if(abs(circlepad.dx) > 15)
64-
cmd->sidemove += m_side.value * circlepad.dx * 2; //FIX ME: allow player to choose between strafing or turning
61+
if(abs(circlepad.dy) > 15){
62+
cmd->forwardmove += m_forward.value * circlepad.dy * 2;
63+
}
64+
if(abs(circlepad.dx) > 15){
65+
if((in_strafe.state & 1) || (lookstrafe.value))
66+
cmd->sidemove += m_side.value * circlepad.dx * 2;
67+
else
68+
cl.viewangles[YAW] -= m_side.value * circlepad.dx * 0.03;
69+
}
6570

6671
//cStick is only available on N3DS... Until libctru implements support for circlePad Pro
6772
if(isN3DS){
73+
6874
hidCstickRead(&cstick);
69-
cstick.dx = abs(cstick.dx) < 10 ? 0 : cstick.dx * sensitivity.value * 0.01;
70-
cstick.dy = abs(cstick.dy) < 15 ? 0 : cstick.dy * sensitivity.value * 0.01;
75+
76+
if(m_pitch.value < 0)
77+
cstick.dy = -cstick.dy;
78+
79+
cstick.dx = abs(cstick.dx) < 10 ? 0 : cstick.dx * csensitivity.value * 0.01;
80+
cstick.dy = abs(cstick.dy) < 10 ? 0 : cstick.dy * csensitivity.value * 0.01;
7181

7282
cl.viewangles[YAW] -= cstick.dx;
73-
if(in_mlook.state & 1){
74-
cl.viewangles[PITCH] -= cstick.dy;
75-
}
83+
cl.viewangles[PITCH] -= cstick.dy;
7684
}
7785

78-
//If mouselook enabled, stop camera from centering
79-
if(in_mlook.state & 1)
80-
V_StopPitchDrift ();
86+
V_StopPitchDrift ();
87+
8188
}

source/menu.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,6 +1091,16 @@ void M_AdjustSliders (int dir)
10911091
sensitivity.value = 11;
10921092
Cvar_SetValue ("sensitivity", sensitivity.value);
10931093
break;
1094+
#ifdef _3DS
1095+
case 6: // mouse speed
1096+
csensitivity.value += dir * 0.5;
1097+
if (csensitivity.value < 1)
1098+
csensitivity.value = 1;
1099+
if (csensitivity.value > 11)
1100+
csensitivity.value = 11;
1101+
Cvar_SetValue ("csensitivity", csensitivity.value);
1102+
break;
1103+
#else
10941104
case 6: // music volume
10951105
#ifdef _WIN32
10961106
bgmvolume.value += dir * 1.0;
@@ -1103,6 +1113,7 @@ void M_AdjustSliders (int dir)
11031113
bgmvolume.value = 1;
11041114
Cvar_SetValue ("bgmvolume", bgmvolume.value);
11051115
break;
1116+
#endif
11061117
case 7: // sfx volume
11071118
volume.value += dir * 0.1;
11081119
if (volume.value < 0)
@@ -1196,28 +1207,50 @@ void M_Options_Draw (void)
11961207
r = (1.0 - v_gamma.value) / 0.5;
11971208
M_DrawSlider (220, 64, r);
11981209

1210+
#ifdef _3DS
1211+
M_Print (16, 72, " Touch Sensitivity");
1212+
#else
11991213
M_Print (16, 72, " Mouse Speed");
1214+
#endif
12001215
r = (sensitivity.value - 1)/10;
12011216
M_DrawSlider (220, 72, r);
12021217

1218+
#ifdef _3DS
1219+
1220+
M_Print (16, 80, " C Sensitivity");
1221+
r = (csensitivity.value - 1)/10;
1222+
M_DrawSlider (220, 80, r);
1223+
1224+
#else
1225+
12031226
M_Print (16, 80, " CD Music Volume");
12041227
r = bgmvolume.value;
12051228
M_DrawSlider (220, 80, r);
12061229

1230+
#endif
1231+
12071232
M_Print (16, 88, " Sound Volume");
12081233
r = volume.value;
12091234
M_DrawSlider (220, 88, r);
12101235

12111236
M_Print (16, 96, " Always Run");
12121237
M_DrawCheckbox (220, 96, cl_forwardspeed.value > 200);
12131238

1239+
#ifdef _3DS
1240+
M_Print (16, 104, " Invert C-Button");
1241+
#else
12141242
M_Print (16, 104, " Invert Mouse");
1243+
#endif
12151244
M_DrawCheckbox (220, 104, m_pitch.value < 0);
12161245

12171246
M_Print (16, 112, " Lookspring");
12181247
M_DrawCheckbox (220, 112, lookspring.value);
12191248

1249+
#ifdef _3DS
1250+
M_Print (16, 120, " CirclePad Strafe");
1251+
#else
12201252
M_Print (16, 120, " Lookstrafe");
1253+
#endif
12211254
M_DrawCheckbox (220, 120, lookstrafe.value);
12221255

12231256
if (vid_menudrawfn)

source/net_udpctr.c

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,20 @@ int UDP_Init (void)
8282
if (COM_CheckParm ("-noudp"))
8383
return -1;
8484

85-
SOC_buffer = (u32*)memalign(SOC_ALIGN, SOC_BUFFERSIZE);
86-
if(SOC_buffer == NULL)
87-
{
88-
Sys_Error("Failed to allocate SOC_Buffer\n");
89-
}
90-
ret = SOC_Initialize(SOC_buffer, SOC_BUFFERSIZE);
91-
if(SOC_buffer == NULL)
92-
{
93-
Sys_Error("SOC_Initialize failed\n");
94-
}
85+
SOC_buffer = (u32*)memalign(SOC_ALIGN, SOC_BUFFERSIZE);
86+
87+
if(SOC_buffer == NULL)
88+
{
89+
Sys_Error("Failed to allocate SOC_Buffer\n");
90+
}
91+
ret = SOC_Initialize(SOC_buffer, SOC_BUFFERSIZE);
92+
93+
if(ret != 0)
94+
{
95+
96+
free(SOC_buffer);
97+
return -1;
98+
}
9599
myAddr = gethostid();
96100

97101
// if the quake hostname isn't set, set it to the machine name
@@ -101,7 +105,11 @@ int UDP_Init (void)
101105
}
102106

103107
if ((net_controlsocket = UDP_OpenSocket (5000)) == -1) //Passing 0 causes function to fail on 3DS
104-
Sys_Error("UDP_Init: Unable to open control socket\n");
108+
{
109+
SOC_Shutdown();
110+
free(SOC_buffer);
111+
return -1;
112+
}
105113

106114
((struct sockaddr_in *)&broadcastaddr)->sin_family = AF_INET;
107115
((struct sockaddr_in *)&broadcastaddr)->sin_addr.s_addr = INADDR_BROADCAST;

source/sys_ctr.c

Lines changed: 34 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2323
#include "errno.h"
2424

2525
#include <3ds.h>
26+
#include <dirent.h>
2627
#include "ctr.h"
2728
#include "touch_ctr.h"
2829

@@ -219,77 +220,47 @@ void Sys_Sleep (void)
219220
{
220221
}
221222

222-
void CTR_KeyDown(u32 keys){
223+
void CTR_SetKeys(u32 keys, u32 state){
223224
if( keys & KEY_SELECT)
224-
Key_Event(K_ESCAPE, true);
225+
Key_Event(K_ESCAPE, state);
225226
if( keys & KEY_START)
226-
Key_Event(K_ENTER, true);
227+
Key_Event(K_ENTER, state);
227228
if( keys & KEY_DUP)
228-
Key_Event(K_UPARROW, true);
229+
Key_Event(K_UPARROW, state);
229230
if( keys & KEY_DDOWN)
230-
Key_Event(K_DOWNARROW, true);
231+
Key_Event(K_DOWNARROW, state);
231232
if( keys & KEY_DLEFT)
232-
Key_Event(K_LEFTARROW, true);
233+
Key_Event(K_LEFTARROW, state);
233234
if( keys & KEY_DRIGHT)
234-
Key_Event(K_RIGHTARROW, true);
235+
Key_Event(K_RIGHTARROW, state);
235236
if( keys & KEY_Y)
236-
Key_Event('y', true);
237+
Key_Event('y', state);
237238
if( keys & KEY_X)
238-
Key_Event('x', true);
239+
Key_Event('x', state);
239240
if( keys & KEY_B)
240-
Key_Event('b', true);
241+
Key_Event('b', state);
241242
if( keys & KEY_A)
242-
Key_Event('a', true);
243+
Key_Event('a', state);
243244
if( keys & KEY_L)
244-
Key_Event('l', true);
245+
Key_Event('l', state);
245246
if( keys & KEY_R)
246-
Key_Event('r', true);
247+
Key_Event('r', state);
247248
if( keys & KEY_ZL)
248-
Key_Event('k', true);
249+
Key_Event('k', state);
249250
if( keys & KEY_ZR)
250-
Key_Event('t', true);
251+
Key_Event('t', state);
251252
}
252253

253-
void CTR_KeyUp(u32 keys){
254-
if( keys & KEY_SELECT)
255-
Key_Event(K_ESCAPE, false);
256-
if( keys & KEY_START)
257-
Key_Event(K_ENTER, false);
258-
if( keys & KEY_DUP)
259-
Key_Event(K_UPARROW, false);
260-
if( keys & KEY_DDOWN)
261-
Key_Event(K_DOWNARROW, false);
262-
if( keys & KEY_DLEFT)
263-
Key_Event(K_LEFTARROW, false);
264-
if( keys & KEY_DRIGHT)
265-
Key_Event(K_RIGHTARROW, false);
266-
if( keys & KEY_Y)
267-
Key_Event('y', false);
268-
if( keys & KEY_X)
269-
Key_Event('x', false);
270-
if( keys & KEY_B)
271-
Key_Event('b', false);
272-
if( keys & KEY_A)
273-
Key_Event('a', false);
274-
if( keys & KEY_L)
275-
Key_Event('l', false);
276-
if( keys & KEY_R)
277-
Key_Event('r', false);
278-
if( keys & KEY_ZL)
279-
Key_Event('k', false);
280-
if( keys & KEY_ZR)
281-
Key_Event('t', false);
282-
}
283254

284255
void Sys_SendKeyEvents (void)
285256
{
286257
hidScanInput();
287258
u32 kDown = hidKeysDown();
288259
u32 kUp = hidKeysUp();
289260
if(kDown)
290-
CTR_KeyDown(kDown);
261+
CTR_SetKeys(kDown, true);
291262
if(kUp)
292-
CTR_KeyUp(kUp);
263+
CTR_SetKeys(kUp, false);
293264

294265
Touch_Update();
295266
}
@@ -308,7 +279,7 @@ int main (int argc, char **argv)
308279
{
309280
float time, oldtime;
310281

311-
APT_CheckNew3DS(NULL, &isN3DS);
282+
APT_CheckNew3DS(&isN3DS);
312283
if(isN3DS)
313284
osSetSpeedupEnable(true);
314285

@@ -318,13 +289,25 @@ int main (int argc, char **argv)
318289
gfxSetDoubleBuffering(GFX_BOTTOM, false);
319290
gfxSet3D(false);
320291
consoleInit(GFX_BOTTOM, NULL);
292+
293+
char *qargv[3];
294+
int qargc = 1;
295+
296+
qargv[0] = "";
297+
298+
if(strlen(argv[1]) != 0){
299+
qargv[1] = "-game";
300+
qargv[2] = argv[1];
301+
qargc += 2;
302+
}
303+
321304
static quakeparms_t parms;
322305

323-
parms.memsize = 16*1024*1024;
306+
parms.memsize = 24*1024*1024;
324307
parms.membase = malloc (parms.memsize);
325308
parms.basedir = ".";
326309

327-
COM_InitArgv (argc, argv);
310+
COM_InitArgv (qargc, qargv);
328311

329312
parms.argc = com_argc;
330313
parms.argv = com_argv;
@@ -334,7 +317,7 @@ int main (int argc, char **argv)
334317
Touch_DrawOverlay();
335318
//Sys_Init();
336319
oldtime = Sys_FloatTime() -0.1;
337-
while (1)
320+
while (aptMainLoop())
338321
{
339322
time = Sys_FloatTime();
340323
Host_Frame (time - oldtime);

source/touch_ctr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
2828
//Keyboard is currently laid out on a 14*4 grid of 20px*20px boxes for lazy implementation
2929
char keymap[14 * 6] = {
3030
K_ESCAPE , K_F1, K_F2, K_F3, K_F4, K_F5, K_F6, K_F7, K_F8, K_F9, K_F10, K_F11, K_F12, 0,
31-
'`' , '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '+', K_BACKSPACE,
31+
'`' , '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', K_BACKSPACE,
3232
K_TAB, 'q' , 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '|',
3333
0, 'a' , 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', K_ENTER, K_ENTER,
3434
K_SHIFT, 'z' , 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', 0, K_UPARROW, 0,

tf.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<shortcut>
2+
<name>Team Fortress</name>
3+
<executable>/3ds/ctrQuake/ctrQuake.3dsx</executable>
4+
<arg>fortress</arg>
5+
</shortcut>

0 commit comments

Comments
 (0)