Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
8547 maxcodehac 1
 
2
#include 
3
#include 
4
#include 
5
#include "i_system.h"
6
#include "d_event.h"
7
#include "d_net.h"
8
#include "m_argv.h"
9
#include "doomstat.h"
10
#include "i_net.h"
11
12
 
13
14
 
15
void  _cdecl dlfree(void*);
16
void _cdecl mf_init();
17
18
 
19
#define free dlfree
20
#define realloc dlrealloc
21
22
 
23
24
 
25
#define B_HOST_IS_LENDIAN 1
26
#endif
27
#if !defined(sparc) && B_HOST_IS_LENDIAN
28
#ifndef ntohl
29
#define ntohl(x) \
30
        ((unsigned long int)((((unsigned long int)(x) & 0x000000ffU) << 24) | \
31
                             (((unsigned long int)(x) & 0x0000ff00U) <<  8) | \
32
                             (((unsigned long int)(x) & 0x00ff0000U) >>  8) | \
33
                             (((unsigned long int)(x) & 0xff000000U) >> 24)))
34
#endif
35
36
 
37
#define ntohs(x) \
38
        ((unsigned short int)((((unsigned short int)(x) & 0x00ff) << 8) | \
39
                              (((unsigned short int)(x) & 0xff00) >> 8)))
40
#endif
41
42
 
43
#define htonl(x) ntohl(x)
44
#endif
45
#ifndef htons
46
#define htons(x) ntohs(x)
47
#endif
48
#endif
49
50
 
51
int NetListen (void);
52
53
 
54
 
55
// NETWORKING
56
//
57
58
 
59
#define IPPORT_USERRESERVED     5000
60
#endif
61
62
 
63
int     sendsocket[MAXNETNODES];
64
int     insocket;
65
66
 
67
void    (*netsend) (void);
68
69
 
70
71
 
72
int GetAvailPort(void)
73
{
74
 int i,d0;
75
 //for(i=0;i<1024;i++)
76
 //{
77
 // __asm__ __volatile__(
78
 //     "int $0x40"
79
 //     :"=a"(d0)
80
 //     :"0"(53),"b"(9),"c"(first_user_port+i));
81
 // if(d0==1) return i+first_user_port;
82
 //}
83
 I_Error("Unable to get new port\n");
84
 return -1;
85
}
86
**********/
87
88
 
89
{
90
 int d0=0;
91
 //__asm__ __volatile__(
92
 //    "int $0x40"
93
 //    :"=a"(d0)
94
 //    :"0"(53),"b"(1),"c"(DOOMPORT),"d"(0),"S"(0));
95
 //if(d0==0xffffffff)
96
 //{
97
  I_Error("Unable to create socket\n");
98
 //}
99
 return d0;
100
}
101
102
 
103
{
104
 int d0;
105
 int p;
106
// p=GetAvailPort();
107
// __asm__ __volatile__(
108
//     "int $0x40"
109
//     :"=a"(d0)
110
//     :"0"(53),"b"(0),"c"(p),"d"(DOOMPORT),"S"(remote_ip));
111
// if(d0==0xffffffff)
112
// {
113
  I_Error("Unable to create output socket\n");
114
// }
115
 return d0;
116
}
117
118
 
119
// PacketSend
120
//
121
void PacketSend (void)
122
{
123
 int c;
124
 doomdata_t sw;
125
126
 
127
 
128
129
 
130
 
131
 sw.checksum = htonl(netbuffer->checksum);
132
 sw.player = netbuffer->player;
133
 sw.retransmitfrom = netbuffer->retransmitfrom;
134
 sw.starttic = netbuffer->starttic;
135
 sw.numtics = netbuffer->numtics;
136
 for (c=0 ; c< netbuffer->numtics ; c++)
137
 {
138
  sw.cmds[c].forwardmove = netbuffer->cmds[c].forwardmove;
139
  sw.cmds[c].sidemove = netbuffer->cmds[c].sidemove;
140
  sw.cmds[c].angleturn = htons(netbuffer->cmds[c].angleturn);
141
  sw.cmds[c].consistancy = htons(netbuffer->cmds[c].consistancy);
142
  sw.cmds[c].chatchar = netbuffer->cmds[c].chatchar;
143
  sw.cmds[c].buttons = netbuffer->cmds[c].buttons;
144
 }
145
// __libclog_printf("Sending packet %u to node %u\n",gametic,
146
//     doomcom->remotenode);
147
// __asm__ __volatile__(
148
//     "int $0x40"
149
//     :"=a"(c)
150
//     :"0"(53),"b"(4),"c"(sendsocket[doomcom->remotenode]),
151
//      "d"(doomcom->datalength),"S"((long)&sw));
152
// if(c==-1)
153
// {
154
//  __libclog_printf("Unable to send packet to remote node\n");
155
// }
156
}
157
158
 
159
// PacketGet
160
//
161
void PacketGet (void)
162
{
163
}
164
165
 
166
{
167
 int d0;
168
// __asm__ __volatile__(
169
//     "int $0x40"
170
//     :"=a"(d0)
171
//     :"0"(52),"b"(1));
172
 return d0;
173
}
174
175
 
176
 
177
// I_InitNetwork
178
//
179
180
 
181
{
182
    boolean             trueval = true;
183
    int                 i;
184
    int                 p;
185
186
 
187
    memset (doomcom, 0, sizeof(*doomcom) );
188
189
 
190
    i = M_CheckParm ("-dup");
191
    if (i && i< myargc-1)
192
    {
193
        doomcom->ticdup = myargv[i+1][0]-'0';
194
        if (doomcom->ticdup < 1)
195
            doomcom->ticdup = 1;
196
        if (doomcom->ticdup > 9)
197
            doomcom->ticdup = 9;
198
    }
199
    else
200
        doomcom-> ticdup = 1;
201
202
 
203
        doomcom-> extratics = 1;
204
    else
205
        doomcom-> extratics = 0;
206
207
 
208
    if (p && p
209
    {
210
        DOOMPORT = atoi (myargv[p+1]);
211
//      __libclog_printf ("using alternate port %i\n",DOOMPORT);
212
    }
213
214
 
215
    //  -net    ...
216
    i = M_CheckParm ("-net");
217
218
 
219
    {
220
        // single player game
221
        netgame = false;
222
        doomcom->id = DOOMCOM_ID;
223
        doomcom->numplayers = doomcom->numnodes = 1;
224
        doomcom->deathmatch = false;
225
        doomcom->consoleplayer = 0;
226
        return;
227
    }
228
229
 
230
    netget = PacketGet;
231
    netgame = true;
232
233
 
234
    doomcom->consoleplayer = myargv[i+1][0]-'1';
235
236
 
237
    doomcom->id = DOOMCOM_ID;
238
    doomcom->numplayers = doomcom->numnodes;
239
    sendsocket[0]=0;
240
    for(i=1;i
241
    {
242
     sendsocket[i]=-1;
243
    }
244
    insocket=CreateInputUDPsocket();
245
 //   __libclog_printf("DOOM: Input UDP socket is %d\n",insocket);
246
}
247
248
 
249
{
250
251
 
252
 
253
254
 
255
 
256
    {
257
//      netsend ();
258
    }
259
    else if (doomcom->command == CMD_GET)
260
    {
261
//      netget ();
262
    }
263
    else
264
        I_Error ("Bad net cmd: %i\n",doomcom->command);
265
}
266
>