Description
Frog Boy Color
The Frog Boy Color is a ground up redesign of the classic Game Boy Color, from the circuits up to the shell. Taking on a wide form factor more akin to the Game Boy Advance, it also adds USB-C charging, and stereo speakers in addition to compatibility with original GB/GBC games and accessories.
All of the bespoke parts necessary to build a Frog Boy Color are attached to this project, and the rest of the parts necessary can be found on the GitHub project page.
The front and back shells are suitable for both CNC machining as well as 3D printing in resin. Battery brackets are recommended to be printed in SLS/MJF nylon. Volume wheel is recommended to be CNC machined. Light pipe must be printed in clear material, either resin or filament.
GitHub Project Repo
Overview/Assembly video
Gekkio Kicad Libs
CAD-Custom parts and enclosures
Right Battery Clip(SLS Nylon)
rightBatteryClip.stl
Left Battery Clip(SLS Nylon)
leftBatteryClip.stl
Light Pipe(Clear resin)
lightPipe.stl
Front Shell(CNC or Resin, 3/29/24)
fbcFront032924.step
fbcFrontTD032924.pdf
Back Shell(CNC or Resin, 3/29/24)
fbcBack021324.step
fbcBackTD021324.pdf
Volume Wheel(CNC, 3/29/24)
fbcVolumeWheel021324.step
fbcVolumeWheelTD021324.pdf
Original Volume Wheel(CNC)
volumeWheelCNCv5_1.step
';
html += '
0 /' + commentObj.max_count + '
';
html += '
';
html += '
';
html += '
';
html += '
';
html += '
'+$('#ImgCountTips').val()+'
';
html += '
'+$('#ImgSizeTips').val()+'
';
html += '
'+$('#ImgTypeTips').val()+'
';
html += '
';
html += '
';
html += ' ' + $('#JsCancel').val() + ' ';
html += ' ' + $('#JsA15').val() + ' ';
html += '
';
html += '
';
html += '';
$('#div-three-' + id).children('div').append(html).show();
commentObj.fn_uploader(id);
}
},
//取消添加留言
fn_cancel_msg: function (obj) {
$(obj).parents('.js-son-comments').hide();
},
//删除自己的留言
fn_del_msg: function (level, id) {
if (!commentObj.isLogin) {
//弹出登录框
layerLogin();
return false;
}
layer.confirm($('#JsA10').val(), function (index) {
$.getJSON(commentObj.fn_del_comment_url(), { msgid: id }, function (res) {
if (res.result) {
if (level == 1) {
//if (ispage > 0)
// window.location.reload();
$('#li' + id).remove();
commentObj.fn_up_level_msg_cnt(level, id, -1);
}
else {
var obj = $('#' + (level == 1 ? 'li' : 'div-three-') + id);
var num = parseInt(obj.parents('li').find('b').text());
num += -1;
if (num < 0) {
num = 0;
}
var parobj = $('#div-three-' + id).parent();
obj.parents('li').find('b').text(num);
$('#div-three-' + id).remove();
if (parobj.find('.sub-comment').length > 0) {
} else {
parobj.parent().hide();
}
}
commentObj.fn_up_msg_cnt(-1);
layer.close(index);
}
else if (res.msg == "nothing") {
layer.alert("error");
return;
}
else if (res.msg == "havereply") {
layer.alert($('#JsA11').val());
return;
}
else {
layer.alert($('#JsA12').val());
return;
}
});
})
},
//更新留言数量
fn_up_msg_cnt: function (val) {
var num = parseInt($('#MsgCount').text());
num += parseInt(val);
if (num < 0) {
num = 0;
}
$('#MsgCount').text(num);
},
//更新留言数量level
fn_up_level_msg_cnt: function (level, id, val) {
var obj = $('#' + (level == 1 ? 'li' : 'div-three-') + id);
var num = parseInt(obj.parents('li').find('b').text());
num += parseInt(val);
if (num < 0) {
num = 0;
}
obj.parents('li').find('b').text(num);
},
fn_mark_comment: function (obj, islike, commentid) {
if (logintype != 1) {
layerLogin();
return;
}
$.getJSON($('#memberurl').val() + '/Project/CommentMark?callback=?', { id: commentObj.obj_id, ProjectType: commentObj.obj_type, isLike: islike, commentid: commentid }, function (res) {
if (res.result) {
var markCnt = parseInt($('#commentMarkCnt' + commentid).text());
if ($(obj).hasClass('active')) {
$(obj).removeClass('active');
if (islike) {
$('#commentMarkCnt' + commentid).text(markCnt - 1);
}
else {
$('#commentMarkCnt' + commentid).text(markCnt + 1);
}
}
else {
if ($(obj).parent().find('dl').hasClass('active')) {
if (islike) {
$('#commentMarkCnt' + commentid).text(markCnt + 2);
}
else {
$('#commentMarkCnt' + commentid).text(markCnt - 2);
}
$(obj).parent().find('dl').removeClass('active');
}
else {
if (islike) {
$('#commentMarkCnt' + commentid).text(markCnt + 1);
}
else {
$('#commentMarkCnt' + commentid).text(markCnt - 1);
}
}
$(obj).addClass('active');
}
}
else if (res.msg == "nologin") {
//弹出登录框
layerLogin();
} else
layer.alert("error");
});
},
//加载数据
fn_load_data: function (page) {
$('#commentload').show();
$.ajax({
url: commentObj.fn_get_comment_url(),
dataType: 'jsonp',
data: { objid: commentObj.obj_id, objtype: commentObj.obj_type, page: page },
success: function (jason) {
var totalpage = jason.TotalCount / 20;
if (totalpage % 1 > 0)
totalpage = parseInt(totalpage) + 1;
if (page >= totalpage) {
$('#commentviewmore').parent().remove();
} else {
$('#commentviewmore').parent().show();
}
if (jason.TotalCount > 0) {
page = jason.PageIndex;
var msgList = jason.DataList;
var html = '';
if (msgList && msgList.length > 0) {
for (var item in msgList) {
html += '';
}
$('#commentload').hide();
$('#comment_ul').append(html);
}
}
$('#commentload').hide();
},
error: function (xhr, status, error) {
$('#commentload').hide();
}
});
},
//保存数据
fn_save_msg: function (level, id) {
var msg = $('#msg-' + id).val();
var msgpic = commentObj.getPicImgArr(id);
if (msg && msg.length > 10000) {
$('#msg-' + id).addClass('form-error');
return false;
}
else if (msg && msg.length > 0) {
//msg = commentObj.convertToHTMLFn(msg);
}
if ((msg && msg.length > 0) || msgpic.length > 4) {
$('body').addClass('global-loading');
$.ajax({
url: commentObj.fn_save_comment_url(),
//dataType: 'jsonp',
type: 'POST',
data: { msg: msg, replyid: id, objid: commentObj.obj_id, msgpic: msgpic, objtype: commentObj.obj_type, isproject: commentObj.is_project },
crossDomain: true,
xhrFields: {
withCredentials: true
},
success: function (res) {
if (res.result) {
//if (ispage > 0) {
// window.location.reload();
// return;
//}
//js加载,不刷新页面,增强体验
$('#msg-' + id).val("");
if (level == 1) {
$('.js-add-comment .js-words').css({ 'color': '#999' }).text(0);
} else {
$('#msg-' + id).next().find('.js-words').css({ 'color': '#999' }).text(0);
}
if (level == 1) {
$('#js-views-example' + id).html("");
//第一级留言(直接回复文章)
var objtype = parseInt($('#hidobjtype').val());
var html = '';
$('#comment_ul').prepend(html);
commentObj.fn_up_msg_cnt(1);
//commentObj.fn_up_level_msg_cnt(1, res.msg.Id, 1);
//if (ispage == 0)
// $("html,body").animate({ scrollTop: $("#li" + res.msg.Id).offset().top - 70 }, 1000);
}
else {
$('#js-views-example' + res.msg.Id).html("");
//第二级留言(回复第一级留言)
var html = '';
if (level == 3) {
//第三级留言(回复第二级留言)
commentObj.fn_add_reply(3, id);
$('#div-three-' + id).parent('div').append(html);
}
else {
commentObj.fn_add_reply(2, id);
$('#div-two-' + id).show().children('div').append(html);
}
commentObj.fn_up_msg_cnt(1);
commentObj.fn_up_level_msg_cnt(level, res.msg.Id, 1);
}
commentObj.fn_uploader(id);
$('#error-tips').hide();
$('#msg-' + id).removeClass('form-error');
$('#error-tips-img' + id).hide();
$('#error-tips-img-size' + id).hide();
$('#error-tips-img-type' + id).hide();
}
else if (res.msg == "nologin") {
//弹出登录框
layerLogin();
}
else {
layer.alert("error");
}
$('body').removeClass('global-loading');
},
error: function (xhr, status, error) {
if (xhr.status == 403) {
layer.alert("Amazon Firewall Warning: 403 Forbidden - Content may contain sensitive or dangerous words.");
}
$('body').removeClass('global-loading');
}
});
} else {
$('#msg-' + id).addClass('form-error');
if (!$('#msg-' + id).hasClass('js-mention'))
$('#error-tips').show().Shake(4, 10);
return false;
}
},
//上传文件
fn_uploader: function (id) {
/*上传文件开始*/
var uploader = WebUploader.create({
// 选完文件后,是否自动上传。
auto: true,
// swf文件路径
swf: '/img/js/jqueryplus/webuploader-0.1.5/Uploader.swf',
// 文件接收服务端。
server: '/Common/UpFile',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: { id: '#msgFile' + id, multiple: false },
fileVal: 'FileData',
fileNumLimit: 5,
fileSingleSizeLimit: '2097152',//'10485760',5242880,2097152
accept: {
title: 'File',
extensions: 'bmp,png,gif,jpg,jpeg',
mimeTypes: 'image/*'
},
'formData': { 'uptype': "blogfile", 'key': "", 'checkcode': "", "getjson": true },
});
uploader.on('beforeFileQueued', function (file) {
$('#error-tips').hide();
$('#msg-' + id).removeClass('form-error');
$('#error-tips-img' + id).hide();
$('#error-tips-img-type' + id).hide()
$('#error-tips-img-size' + id).hide()
});
uploader.on('uploadStart', function (file, percentage) {
if (logintype != 1) {
layerLogin();
return;
}
$("#progress-box" + id).show();
});
uploader.on('uploadProgress', function (file, percentage) {
$('.progress').attr('data-percent', parseInt(percentage * 80))
});
uploader.on('uploadSuccess', function (file, data) {
if (data.state === "SUCCESS") {
var tempImg = '
';
tempImg += '
';
tempImg += '
';
tempImg += '
';
$('#js-views-example' + id).show().append(tempImg)
}
$('.progress').attr('data-percent', parseInt(0))
$("#progress-box" + id).hide();
// 上传图预览
$(document).on('click', '.js-views-example .del-pic', function () {
var fileid = $(this)[0].id;
var file = uploader.getFile(fileid)
if (file) {
uploader.removeFile(file, true); // 删除文件
}
$(this).parent().remove();
$('#error-tips').hide();
$('#msg-' + id).removeClass('form-error');
$('#error-tips-img' + id).hide();
$('#error-tips-img-size' + id).hide();
$('#error-tips-img-type' + id).hide();
})
});
uploader.on('error', function (str) {
if (str == "Q_EXCEED_NUM_LIMIT") {
$('#error-tips-img' + id).show().Shake(4, 10);
}
else if (str == "Q_TYPE_DENIED") {
$('#error-tips-img-type' + id).show().Shake(4, 10);
}
else if (str == "F_EXCEED_SIZE") {
$('#error-tips-img-size' + id).show().Shake(4, 10);
}
setTimeout(function () {
$('#error-tips-img' + id).hide();
$('#error-tips-img-size' + id).hide();
$('#error-tips-img-type' + id).hide();
}, 3000);
});
/*上传文件结束*/
},
// 文本域转html
convertToHTMLFn: function (text) {
return text.replace(/\n/g, '
').replace(/ /g, ' ');
},
getPicImgArr: function (id) {
var imgpicarr = [];
$("img[name='pig-img" + id + "']").each(function (i, e) {
imgpicarr.push(e.src);
})
return imgpicarr.length > 0 ? imgpicarr.join(',') : "";
}
}
commentObj.fn_init();
-->
Ernest Seah
Jun 01,2025
Engineer
Jun 01,2025
J
May 13,2025
Wleg
Apr 16,2025
Engineer
Jan 28,2025
Scott Petrilli
Jan 27,2025
Engineer
Nov 22,2024
Engineer
Nov 17,2024
Jacob Krieger
Nov 08,2024
Florian Klopsch
Nov 01,2024
Engineer
Oct 09,2024
Humajum
Oct 05,2024
Engineer
Sep 29,2024
NorthBest Electronics
Aug 25,2024
vicente orellana
Jul 12,2024
Ryan Thurston
Jul 11,2024
Engineer
Jun 15,2024
Engineer
Jun 14,2024
shoofly 742
Jun 10,2024
Corey Malone
Jun 01,2024
Engineer
May 28,2024
Engineer
May 28,2024
Engineer
Apr 22,2024
James Powell
Apr 10,2024
Engineer
Apr 05,2024
Engineer
Apr 04,2024
Engineer
Apr 01,2024
Engineer
Mar 31,2024
Stephen Hawkes
Mar 31,2024
Engineer
Mar 31,2024
Engineer
Mar 30,2024
Devin Sidell
Mar 30,2024
Engineer
Mar 30,2024
Retro Modding
Mar 26,2024
Engineer
Mar 24,2024
Takayuki Yamada
Mar 24,2024
Engineer
Mar 04,2024
Modern Broadcast
Feb 28,2024
Engineer
Feb 17,2024
Sascha Potthoff-Wenner
Feb 05,2024
aidannot den
Feb 04,2024
Engineer
Feb 02,2024
Engineer
Jan 31,2024
Engineer
Jan 21,2024
Jack V
Jan 10,2024
beenitsua
Jan 06,2024
Daniel Rossiter
Jan 02,2024
Engineer
Dec 29,2023
ahmadexp
Dec 28,2023
J_spec6
Dec 28,2023
Engineer
Dec 27,2023
carlo GG_CUSTOMS_
Dec 27,2023
Engineer
Dec 27,2023
M H
Dec 26,2023
Allan Alvarado
Dec 26,2023
Brendan b_2_3_n
Dec 25,2023