GCC Code Coverage Report


Directory: main/
File: adapter/gameid.c
Date: 2025-10-04 14:03:00
Exec Total Coverage
Lines: 2 32 6.2%
Functions: 1 5 20.0%
Branches: 0 7 0.0%

Line Branch Exec Source
1 /*
2 * Copyright (c) 2019-2022, Jacques Gagnon
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6 #include <stdio.h>
7 #include <string.h>
8 #include "gameid.h"
9 #include "tools/ps1_gameid.h"
10
11 #define GAME_ID_BUF_LEN 23
12
13 static char gameid[GAME_ID_BUF_LEN] = {0};
14 static char tmp_gameid[GAME_ID_BUF_LEN] = {0};
15
16 static void set_pfx_gameid(uint8_t *data, uint32_t len) {
17 if (len * 2 >= sizeof(gameid)) {
18 len = (sizeof(gameid) - 1) / 2;
19 }
20
21 snprintf(tmp_gameid, GAME_ID_BUF_LEN, "%02X%02X%02X%02X%02X%02X%02X%02X",
22 data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]);
23 }
24
25 static void set_ps1_gameid(uint8_t *data, uint32_t len) {
26 memcpy(tmp_gameid, data, len);
27 ps1_gid_sanitize(tmp_gameid);
28 }
29
30 int32_t gid_update(struct raw_fb *fb_data) {
31 memset(tmp_gameid, 0, sizeof(gameid));
32
33 switch (wired_adapter.system_id) {
34 case N64:
35 case GC:
36 set_pfx_gameid(fb_data->data, fb_data->header.data_len);
37 break;
38 case PSX:
39 case PS2:
40 set_ps1_gameid(fb_data->data, fb_data->header.data_len);
41 break;
42 }
43
44 if (memcmp(gameid, tmp_gameid, sizeof(gameid)) != 0) {
45 memcpy(gameid, tmp_gameid, sizeof(gameid));
46 printf("# %s: %s\n", __FUNCTION__, gameid);
47 return 1;
48 }
49 return 0;
50 }
51
52 int32_t gid_update_sys(struct raw_fb *fb_data) {
53 memset(tmp_gameid, 0, sizeof(gameid));
54 memcpy(tmp_gameid, fb_data->data, fb_data->header.data_len);
55
56 if (memcmp(gameid, tmp_gameid, sizeof(gameid)) != 0) {
57 memcpy(gameid, tmp_gameid, sizeof(gameid));
58 printf("# %s: %s\n", __FUNCTION__, gameid);
59 return 1;
60 }
61 return 0;
62 }
63
64 1 char *gid_get(void) {
65 1 return gameid;
66 }
67