Skip to content

Latest commit

 

History

47 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

这是一款网页版 GBA模拟器

this is gba wasm emulator by retroarch vba-next!

你可以运行加速,SL大法,RTC,金手指!

私有部署

  • gbawasm#welcome() 直接启动某ROM
    var VBA = this;
    var buffer;
    var romsName;
    if (this.isIPhone && !this.isstandalone) {
        /**
         * 阻止苹果手机浏览器
            */
        $('.wel-index').innerHTML = '<p style="color:red">检测到你是苹果手机.<br>请点击状态栏的"更多"<br>下翻后的"添加到主屏幕".</p>';
        return;
    }
    $('.wel-index').innerHTML = '';
    var progressElm = document.createElement('div');
    progressElm.innerHTML = '请稍等!';
    progressElm.classList.add('download-progress');
    progressElm.style.cssText='color: #3643e9;font-size: 1rem;font-weight: bold;text-shadow: 2px 2px 3px #8b7b7b;';
    $('.wel-index').appendChild(progressElm);
    if (VBA.isPWA) {
        if (!navigator.serviceWorker.controller) {
            progressElm.innerHTML = 'serviceWorker 未完全加载!稍后替你刷新页面';
            return;
        }
    }
    /**
     * 锁定核心
     */
    CorePath = 'mGBA/';
    VBA.corename = 'mgba';
    VBA.FSROOT.saves += CorePath;
    VBA.FSROOT.cheat += CorePath;
    VBA.DBKEY += VBA.corename;
    /**
     * 加载模拟器Module类
        */
    var Module = new emuModulle(VBA,TXT => progressElm.innerHTML = TXT);
    if(await Module.isRuntimeInitialized){
        progressElm.innerHTML = '模拟器核心下载失败,请确保已经联网!下载过慢建议下载加速器加速任意外服游戏!';
        return;
    }
    /**
     * 需要注意必须通过事件运行,否则音频事件在手机不会初始化
     */
    /**
     * 运行指定url
     */
    romsName = 'xxx.gba';
    var buffer = await  MyTable('rooms').getdata(romsName);
    if(!buffer){
        ToArr(await T.FetchItem({
            url:romsName.replace(/\.gba$/i,'.zip'), // xxx.zip
            unpack:!0,
        }),
        entry=>{
            if(this.EXTREGX.test(entry[0])&&entry.length>0x2000){
                //entry.length 过滤某些系统生成的奇怪文件 例如苹果压缩的文件
            buffer = entry[1];
            romsName = entry[0];
            }
        });
        await  MyTable('rooms').put({
            contents:buffer,
            system:GetExt(romsName),
            timestamp: new Date,
        },romsName);
    }
    var progressbtn = document.createElement('button');
    progressbtn.innerHTML = '开始游戏';
    progressElm.remove();
    $('.wel-index').appendChild(progressbtn);
    /**
     * 绑定点击事件
     */
    progressbtn.on('click',e=>{
         VBA.StartGame(romsName, buffer);
    });
    /*************/
    /**
     * 上传游戏
     */
    var progressbtn = document.createElement('button');
    progressbtn.innerHTML = '浏览游戏';
    $('.wel-index').appendChild(progressbtn);
    /**
     * 绑定点击事件
     */
    progressbtn.on('click',e=>{
        VBA.upload(async files=>{
            var file = files[0];
            var u8 = await T.unFile(file,(a,b,c)=>progressElm.innerHTML = `解压进度:${c} ${I.PER(a,b)}`);
            if(u8 instanceof Uint8Array){
                romsName = file.name;
                buffer = u8;
            }else if(I.obj(u8)){
                ToArr(u8,entry=>{
                        if(this.EXTREGX.test(entry[0])&&entry.length>0x2000){
                            //entry.length 过滤某些系统生成的奇怪文件 例如苹果压缩的文件
                            buffer = entry[1];
                            romsName = entry[0];
                        }
                })
            }
            if(romsName&&buffer)VBA.StartGame(romsName, buffer);
        });
    });

About

a powerful GAME BOY ADVANCE emulator online ,仿原生的网页版GBA模拟器

Topics

Resources

Stars

20 stars

Watchers

4 watching

Forks

Used by

Contributors

Languages