mirror of
https://github.com/Oibaf66/frodo-wii.git
synced 2024-11-22 19:39:24 +01:00
Network: Reduce SDL deps (use uint* instead of Uint* from SDL)
This commit is contained in:
parent
3c27c3b326
commit
78a4a29c83
@ -129,19 +129,19 @@ Network::Network(const char *remote_host, int port)
|
|||||||
this->target_kbps = 160000; /* kilobit per seconds */
|
this->target_kbps = 160000; /* kilobit per seconds */
|
||||||
this->kbps = 0;
|
this->kbps = 0;
|
||||||
|
|
||||||
this->raw_buf = (Uint8*)malloc(RAW_SIZE);
|
this->raw_buf = (uint8*)malloc(RAW_SIZE);
|
||||||
this->rle_buf = (Uint8*)malloc(RLE_SIZE);
|
this->rle_buf = (uint8*)malloc(RLE_SIZE);
|
||||||
this->diff_buf = (Uint8*)malloc(DIFF_SIZE);
|
this->diff_buf = (uint8*)malloc(DIFF_SIZE);
|
||||||
assert(this->raw_buf && this->rle_buf && this->diff_buf);
|
assert(this->raw_buf && this->rle_buf && this->diff_buf);
|
||||||
this->cur_joystick_data = 0;
|
this->cur_joystick_data = 0;
|
||||||
|
|
||||||
/* Go from lower right to upper left */
|
/* Go from lower right to upper left */
|
||||||
this->refresh_square = N_SQUARES_W * N_SQUARES_H - 1;
|
this->refresh_square = N_SQUARES_W * N_SQUARES_H - 1;
|
||||||
this->square_updated = (Uint32*)malloc( N_SQUARES_W * N_SQUARES_H * sizeof(Uint32));
|
this->square_updated = (uint32*)malloc( N_SQUARES_W * N_SQUARES_H * sizeof(uint32));
|
||||||
assert(this->square_updated);
|
assert(this->square_updated);
|
||||||
memset(this->square_updated, 0, N_SQUARES_W * N_SQUARES_H * sizeof(Uint32));
|
memset(this->square_updated, 0, N_SQUARES_W * N_SQUARES_H * sizeof(uint32));
|
||||||
|
|
||||||
this->screen = (Uint8 *)malloc(DISPLAY_X * DISPLAY_Y);
|
this->screen = (uint8 *)malloc(DISPLAY_X * DISPLAY_Y);
|
||||||
assert(this->screen);
|
assert(this->screen);
|
||||||
|
|
||||||
this->sound_head = this->sound_tail = 0;
|
this->sound_head = this->sound_tail = 0;
|
||||||
@ -207,8 +207,8 @@ bool Network::DecodeDisplayDiff(struct NetworkUpdate *src,
|
|||||||
|
|
||||||
while (p < sz)
|
while (p < sz)
|
||||||
{
|
{
|
||||||
Uint8 len = dp->data[p];
|
uint8 len = dp->data[p];
|
||||||
Uint8 color = dp->data[p+1];
|
uint8 color = dp->data[p+1];
|
||||||
int x_diff = (x - x_start + len) % SQUARE_W;
|
int x_diff = (x - x_start + len) % SQUARE_W;
|
||||||
int y_diff = (x - x_start + len) / SQUARE_W;
|
int y_diff = (x - x_start + len) / SQUARE_W;
|
||||||
|
|
||||||
@ -236,8 +236,8 @@ bool Network::DecodeDisplayRLE(struct NetworkUpdate *src,
|
|||||||
|
|
||||||
while (p < sz)
|
while (p < sz)
|
||||||
{
|
{
|
||||||
Uint8 len = dp->data[p];
|
uint8 len = dp->data[p];
|
||||||
Uint8 color = dp->data[p+1];
|
uint8 color = dp->data[p+1];
|
||||||
|
|
||||||
while (len > 0)
|
while (len > 0)
|
||||||
{
|
{
|
||||||
@ -266,9 +266,9 @@ bool Network::DecodeDisplayRaw(struct NetworkUpdate *src,
|
|||||||
{
|
{
|
||||||
for (int x = x_start; x < x_start + SQUARE_W; x += 2)
|
for (int x = x_start; x < x_start + SQUARE_W; x += 2)
|
||||||
{
|
{
|
||||||
Uint8 v = dp->data[(y - y_start) * raw_w + (x - x_start) / 2];
|
uint8 v = dp->data[(y - y_start) * raw_w + (x - x_start) / 2];
|
||||||
Uint8 a = v >> 4;
|
uint8 a = v >> 4;
|
||||||
Uint8 b = v & 0xf;
|
uint8 b = v & 0xf;
|
||||||
|
|
||||||
this->screen[ y * DISPLAY_X + x ] = a;
|
this->screen[ y * DISPLAY_X + x ] = a;
|
||||||
this->screen[ y * DISPLAY_X + x + 1 ] = b;
|
this->screen[ y * DISPLAY_X + x + 1 ] = b;
|
||||||
@ -278,14 +278,14 @@ bool Network::DecodeDisplayRaw(struct NetworkUpdate *src,
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Network::CompareSquare(Uint8 *a, Uint8 *b)
|
bool Network::CompareSquare(uint8 *a, uint8 *b)
|
||||||
{
|
{
|
||||||
for (int y = 0; y < SQUARE_H; y++)
|
for (int y = 0; y < SQUARE_H; y++)
|
||||||
{
|
{
|
||||||
for (int x = 0; x < SQUARE_W; x += 4)
|
for (int x = 0; x < SQUARE_W; x += 4)
|
||||||
{
|
{
|
||||||
Uint32 va = *((Uint32*)&a[ y * DISPLAY_X + x ]);
|
uint32 va = *((uint32*)&a[ y * DISPLAY_X + x ]);
|
||||||
Uint32 vb = *((Uint32*)&b[ y * DISPLAY_X + x ]);
|
uint32 vb = *((uint32*)&b[ y * DISPLAY_X + x ]);
|
||||||
|
|
||||||
if (va != vb)
|
if (va != vb)
|
||||||
return false;
|
return false;
|
||||||
@ -295,12 +295,12 @@ bool Network::CompareSquare(Uint8 *a, Uint8 *b)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Network::EncodeDisplay(Uint8 *master, Uint8 *remote)
|
void Network::EncodeDisplay(uint8 *master, uint8 *remote)
|
||||||
{
|
{
|
||||||
for ( int sq = 0; sq < N_SQUARES_H * N_SQUARES_W; sq++ )
|
for ( int sq = 0; sq < N_SQUARES_H * N_SQUARES_W; sq++ )
|
||||||
{
|
{
|
||||||
Uint8 *p_master = &master[ SQUARE_TO_Y(sq) * DISPLAY_X + SQUARE_TO_X(sq) ];
|
uint8 *p_master = &master[ SQUARE_TO_Y(sq) * DISPLAY_X + SQUARE_TO_X(sq) ];
|
||||||
Uint8 *p_remote = &remote[ SQUARE_TO_Y(sq) * DISPLAY_X + SQUARE_TO_X(sq) ];
|
uint8 *p_remote = &remote[ SQUARE_TO_Y(sq) * DISPLAY_X + SQUARE_TO_X(sq) ];
|
||||||
|
|
||||||
/* Refresh periodically or if the squares differ */
|
/* Refresh periodically or if the squares differ */
|
||||||
if ( (this->refresh_square == sq && this->kbps < this->target_kbps * 0.7) ||
|
if ( (this->refresh_square == sq && this->kbps < this->target_kbps * 0.7) ||
|
||||||
@ -329,13 +329,13 @@ void Network::EncodeDisplay(Uint8 *master, Uint8 *remote)
|
|||||||
|
|
||||||
|
|
||||||
size_t Network::EncodeDisplaySquare(struct NetworkUpdate *dst,
|
size_t Network::EncodeDisplaySquare(struct NetworkUpdate *dst,
|
||||||
Uint8 *screen, Uint8 *remote, int square,
|
uint8 *screen, uint8 *remote, int square,
|
||||||
bool use_diff)
|
bool use_diff)
|
||||||
{
|
{
|
||||||
struct NetworkUpdateDisplay *dp = (struct NetworkUpdateDisplay *)dst->data;
|
struct NetworkUpdateDisplay *dp = (struct NetworkUpdateDisplay *)dst->data;
|
||||||
const int x_start = SQUARE_TO_X(square);
|
const int x_start = SQUARE_TO_X(square);
|
||||||
const int y_start = SQUARE_TO_Y(square);
|
const int y_start = SQUARE_TO_Y(square);
|
||||||
Uint8 rle_color = screen[ y_start * DISPLAY_X + x_start ];
|
uint8 rle_color = screen[ y_start * DISPLAY_X + x_start ];
|
||||||
int rle_len = 0, diff_len = 0;
|
int rle_len = 0, diff_len = 0;
|
||||||
size_t rle_sz = 0, diff_sz = 0;
|
size_t rle_sz = 0, diff_sz = 0;
|
||||||
const int raw_w = SQUARE_W / 2;
|
const int raw_w = SQUARE_W / 2;
|
||||||
@ -348,8 +348,8 @@ size_t Network::EncodeDisplaySquare(struct NetworkUpdate *dst,
|
|||||||
|
|
||||||
for (int x = x_start; x < x_start + SQUARE_W; x++)
|
for (int x = x_start; x < x_start + SQUARE_W; x++)
|
||||||
{
|
{
|
||||||
Uint8 col_s = screen[ y * DISPLAY_X + x ];
|
uint8 col_s = screen[ y * DISPLAY_X + x ];
|
||||||
Uint8 col_r = remote[ y * DISPLAY_X + x ];
|
uint8 col_r = remote[ y * DISPLAY_X + x ];
|
||||||
bool is_odd = (x & 1) == 1;
|
bool is_odd = (x & 1) == 1;
|
||||||
int raw_shift = (is_odd ? 0 : 4);
|
int raw_shift = (is_odd ? 0 : 4);
|
||||||
|
|
||||||
@ -532,7 +532,7 @@ struct NetworkUpdateSoundInfo *Network::DequeueSound()
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Network::EncodeJoystickUpdate(Uint8 v)
|
void Network::EncodeJoystickUpdate(uint8 v)
|
||||||
{
|
{
|
||||||
struct NetworkUpdate *dst = this->cur_ud;
|
struct NetworkUpdate *dst = this->cur_ud;
|
||||||
struct NetworkUpdateJoystick *j = (NetworkUpdateJoystick *)dst->data;
|
struct NetworkUpdateJoystick *j = (NetworkUpdateJoystick *)dst->data;
|
||||||
@ -573,9 +573,9 @@ void Network::DrawTransferredBlocks(SDL_Surface *screen)
|
|||||||
SDL_Rect r = {x + w, y, 1, h};
|
SDL_Rect r = {x + w, y, 1, h};
|
||||||
SDL_Rect u = {x, y, w, 1};
|
SDL_Rect u = {x, y, w, 1};
|
||||||
SDL_Rect d = {x, y + h, w, 1};
|
SDL_Rect d = {x, y + h, w, 1};
|
||||||
Uint32 raw = this->square_updated[sq];
|
uint32 raw = this->square_updated[sq];
|
||||||
SDL_Rect size = {x, y, 2 * ((raw & 0xffff) / 17), 4};
|
SDL_Rect size = {x, y, 2 * ((raw & 0xffff) / 17), 4};
|
||||||
Uint32 color = 4;
|
uint32 color = 4;
|
||||||
|
|
||||||
if ((raw >> 16) == DISPLAY_UPDATE_RLE)
|
if ((raw >> 16) == DISPLAY_UPDATE_RLE)
|
||||||
color = 5;
|
color = 5;
|
||||||
@ -608,7 +608,7 @@ bool Network::ReceiveUpdate(struct timeval *tv)
|
|||||||
bool Network::ReceiveUpdate(NetworkUpdate *dst, size_t total_sz,
|
bool Network::ReceiveUpdate(NetworkUpdate *dst, size_t total_sz,
|
||||||
struct timeval *tv)
|
struct timeval *tv)
|
||||||
{
|
{
|
||||||
Uint8 *p = (Uint8*)dst;
|
uint8 *p = (uint8*)dst;
|
||||||
size_t sz_left = total_sz;
|
size_t sz_left = total_sz;
|
||||||
size_t received = 0;
|
size_t received = 0;
|
||||||
bool has_stop = false;
|
bool has_stop = false;
|
||||||
@ -688,7 +688,7 @@ bool Network::SendUpdate(struct sockaddr_in *addr)
|
|||||||
if (sz <= 0)
|
if (sz <= 0)
|
||||||
return false;
|
return false;
|
||||||
size_t cur_sz = 0;
|
size_t cur_sz = 0;
|
||||||
Uint8 *p = (Uint8*)src;
|
uint8 *p = (uint8*)src;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
size_t size_to_send = this->FillNetworkBuffer((NetworkUpdate*)p);
|
size_t size_to_send = this->FillNetworkBuffer((NetworkUpdate*)p);
|
||||||
@ -723,7 +723,7 @@ size_t Network::FillNetworkBuffer(NetworkUpdate *cur)
|
|||||||
sz += cur_sz;
|
sz += cur_sz;
|
||||||
if (ntohs(cur->type) == STOP)
|
if (ntohs(cur->type) == STOP)
|
||||||
break;
|
break;
|
||||||
cur = (NetworkUpdate*)((Uint8*)cur + cur_sz);
|
cur = (NetworkUpdate*)((uint8*)cur + cur_sz);
|
||||||
}
|
}
|
||||||
assert(sz <= 4096);
|
assert(sz <= 4096);
|
||||||
|
|
||||||
@ -733,7 +733,7 @@ size_t Network::FillNetworkBuffer(NetworkUpdate *cur)
|
|||||||
|
|
||||||
void Network::AddNetworkUpdate(NetworkUpdate *update)
|
void Network::AddNetworkUpdate(NetworkUpdate *update)
|
||||||
{
|
{
|
||||||
Uint8 *next = (Uint8*)this->cur_ud + update->size;
|
uint8 *next = (uint8*)this->cur_ud + update->size;
|
||||||
|
|
||||||
this->cur_ud = (NetworkUpdate*)next;
|
this->cur_ud = (NetworkUpdate*)next;
|
||||||
}
|
}
|
||||||
@ -965,7 +965,7 @@ bool Network::ScanDataForStop(NetworkUpdate *ud, size_t max_size)
|
|||||||
size_t cur_sz = ntohl(p->size);
|
size_t cur_sz = ntohl(p->size);
|
||||||
|
|
||||||
sz += cur_sz;
|
sz += cur_sz;
|
||||||
p = (NetworkUpdate*)((Uint8*)p + cur_sz);
|
p = (NetworkUpdate*)((uint8*)p + cur_sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The stop tag (maybe) */
|
/* The stop tag (maybe) */
|
||||||
|
Loading…
Reference in New Issue
Block a user