grim/gousb2snes
Clone
Summary
Browse
Changes
Graph
Update the package path for the new repository host
draft
default
tip
2020-04-27, Gary Kramlich
2bff12a54574
Update the package path for the new repository host
package
sd2snes
import
(
"encoding/binary"
"fmt"
"strings"
)
type
Info
struct
{
version
string
fwver
string
features
InfoFeature
rom
string
}
type
InfoFeature
byte
const
(
InfoFeatureDSPX
InfoFeature
=
1
<<
iota
InfoFeatureST0010
InfoFeatureSRTC
InfoFeatureMSU1
InfoFeature213F
InfoFeatureCmdUnlock
InfoFeatureUSB1
InfoFeatureDMA1
)
func
(
f
InfoFeature
)
String
()
string
{
r
:=
[]
string
{}
if
f
&
InfoFeatureDSPX
!=
0
{
r
=
append
(
r
,
"FEAT_DSPX"
)
}
if
f
&
InfoFeatureST0010
!=
0
{
r
=
append
(
r
,
"FEAT_ST0010"
)
}
if
f
&
InfoFeatureSRTC
!=
0
{
r
=
append
(
r
,
"FEAT_SRTC"
)
}
if
f
&
InfoFeatureMSU1
!=
0
{
r
=
append
(
r
,
"FEAT_MSU1"
)
}
if
f
&
InfoFeature213F
!=
0
{
r
=
append
(
r
,
"FEAT_213F"
)
}
if
f
&
InfoFeatureCmdUnlock
!=
0
{
r
=
append
(
r
,
"FEAT_CMD_UNLOCK"
)
}
if
f
&
InfoFeatureUSB1
!=
0
{
r
=
append
(
r
,
"FEAT_USB1"
)
}
if
f
&
InfoFeatureDMA1
!=
0
{
r
=
append
(
r
,
"FEAT_DMA1"
)
}
return
strings
.
Join
(
r
,
"|"
)
}
func
(
i
*
Info
)
Identifier
()
(
OpCode
,
Namespace
,
Flag
)
{
return
OpCodeInfo
,
NamespaceSNES
,
FlagNone
}
func
(
i
*
Info
)
Process
(
data
[]
byte
)
error
{
fwver
:=
binary
.
BigEndian
.
Uint32
(
data
[
256
:])
i
.
fwver
=
fmt
.
Sprintf
(
"%08x"
,
fwver
)
i
.
version
=
nullTerminated
(
data
[
260
:])
i
.
features
=
InfoFeature
(
data
[
6
])
i
.
rom
=
nullTerminated
(
data
[
16
:])
return
nil
}
func
(
i
*
Info
)
String
()
string
{
return
fmt
.
Sprintf
(
"version: %s\nfwver: %s\nfeatures: %s\nrom: %s"
,
i
.
version
,
i
.
fwver
,
i
.
features
,
i
.
rom
,
)
}